次の 2 行を 1 行にまとめることができますか?
int foo;
std::cin >> foo;
賢明な答え:
int old; std::cin >> old;
恐ろしい答え:
int old, dummy = (std::cin >> old, 0);
適切な答え:引数として渡す前に、宣言old
で定義する必要があります。変数の宣言内で関数呼び出しを取得する唯一の方法は、上記のように初期化式に配置することです。変数を宣言して入力を読み込む受け入れられた方法は、あなたが書いたとおりです。operator>>
int old;
std::cin >> old;
あなたができる...
int old = (std::cin >> old, old);
しかし、あなたは本当にこれをすべきではありません
関数の使用:
int inputdata()
{
int data;
std::cin >> data;
return data;
}
それで:
int a=inputdata();
データ自体の場合:
int inputdata()
{
static bool isDataDeclared=false;
if (isDataDeclared==true)
{
goto read_data;
}
else
{
isDataDeclared=true;
}
static int data=inputdata();
return data;
read_data:
std::cin >> data;
return data;
}
ではないかもしれませんがint
、独自のタイプの場合:
class MyType {
int value;
public:
MyType(istream& is) {
is >> *this;
}
friend istream& operator>>(istream& is, MyType& object);
};
istream& operator>>(istream& is, MyType& object) {
return is >> object.value;
}
istream
次に、コンストラクターに渡された型を作成できます。
int main() {
istringstream iss("42");
MyType object(iss);
}