更多的是一个好奇的问题,但实际上是否可以将通过的任何内容传递cin
给函数而不必浪费变量?
问问题
6617 次
4 回答
7
您可以轻松地定义一个包装函数来执行此操作。
template<class T>
T get(std::istream& is){
T result;
is >> result;
return result;
}
任何体面的编译器都会使用 NRVO 来消除副本。
你可以像这样使用它
f(get<int>(std::cin));
确保不要在一个语句中多次使用它。如果您执行此类操作,则未指定流操作的顺序。
f(get<int>(std::cin),get<int>(std::cin));
您可以按任意顺序获得这两个整数。
于 2012-10-23T12:21:11.630 回答
2
cin
只是一个流,它没有任何魔法。您可以使用其他流方法来做任何您想做的事情。
于 2012-10-23T10:57:03.323 回答
0
你的问题的答案是否定的。为了通过流输入一些东西,你将不得不“浪费”一个变量。您不能将输入数据直接传递给没有中间变量的函数。
于 2012-10-23T10:55:09.313 回答
0
当然:
f(*std::istream_iterator<T>(std::cin));
不过,这可能并不比使用变量更简单,而且如果流无法提供T
.
于 2019-06-19T06:29:49.223 回答