2016-05-21 39 views

回答

3

std::cin >> x返回对cin的引用,该引用不会隐式转换为int

可以使用,运营商,像这样:

(std::cin >> x, x) 

先运行std::cin >> x,然后该表达式计算结果为x

#include <iostream> 
int doubleNumber(int a) 
{ 
    return 2 * a; 
} 

int main() 
{ 
    int x; 
    std::cout << doubleNumber((std::cin >> x, x)); 
    return 0; 
} 

将它分成两行可能会使它更具可读性。

在任何情况下,std::cin >> x都可以用作表达式。 例如,将流隐式转换为布尔值以检查它们是否处于成功(良好)状态是很常见的。 (例如,if(std::cin >> x){ //...

+0

非常感谢你,那正是我一直在寻找的:) –

2

你大概想通过x。但cin >> x的结果是cin,而不是x

该解决方案易于

std::cin >> x; 
std::cout << doubleNumber(x); 

你不能真正通过cin如果你真的想因为它是一个流,而不是int

而返回类型>>就是它让std::cin >> x >> y >> z;这样的东西起作用的方式。

+0

所以没有办法将cin >> x作为参数传递,您在使用它作为参数之前总是需要询问? –

+2

是的,这是正确的。 –

+1

函数不能带流类型的参数吗? (只是问':)。 –

1

std::cin是一个全局对象和operator >>,您发出呼叫的是,再次返回std::cin的方法,这样你就可以写的东西,如:

std::cin >> x >> y; 

我想说的是,std::cin >> x输出不是你刚输入的价值,就像你期望的那样,但是它本身就是std::cin

有关详细信息,请参阅http://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt

相关问题