4

何よりも好奇心の質問ですがcin、変数を無駄にすることなく、関数に渡されるものを実際に渡すことは可能ですか?

4

4 に答える 4

7

これを行うラッパー関数を簡単に定義できます。

template<class T>
T get(std::istream& is){
  T result;
  is >> result;
  return result;
}

適切なコンパイラは、NRVO を使用してコピーを排除します。

こんな感じで使えます

f(get<int>(std::cin));

ただし、1 つのステートメントで複数回使用しないようにしてください。このようなことを行う場合、ストリーム操作の順序は指定されていません。

f(get<int>(std::cin),get<int>(std::cin));

どちらの順序でも 2 つの int を取得できます。

于 2012-10-23T12:21:11.630 に答える
2

cin単なるストリームであり、魔法はありません。他のストリーム メソッドを使用して、必要なことを行うことができます。

http://www.cplusplus.com/reference/iostream/をチェックしてください

于 2012-10-23T10:57:03.323 に答える