2016-05-21 37 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

相關問題