何よりも好奇心の質問ですがcin
、変数を無駄にすることなく、関数に渡されるものを実際に渡すことは可能ですか?
質問する
6617 次
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 に答える