15

次の 2 行を 1 行にまとめることができますか?

int foo;
std::cin >> foo;
4

4 に答える 4

22

賢明な答え:

int old; std::cin >> old;

恐ろしい答え:

int old, dummy = (std::cin >> old, 0);

適切な答え:引数として渡す前に、宣言oldで定義する必要があります。変数の宣言内で関数呼び出しを取得する唯一の方法は、上記のように初期化式に配置することです。変数を宣言して入力を読み込む受け入れられた方法は、あなたが書いたとおりです。operator>>

int old;
std::cin >> old;
于 2013-02-16T20:23:57.723 に答える
11

あなたができる...

int old = (std::cin >> old, old);

しかし、あなたは本当にこれをすべきではありません

于 2013-02-16T20:32:34.320 に答える
3

関数の使用:

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;
}
于 2013-02-16T20:52:34.667 に答える
1

ではないかもしれませんが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);
}
于 2013-02-16T21:59:18.730 に答える