2012-11-18 65 views
1

我的理解是,運算符>>返回左操作數,所以cin >> x返回cin,如果遇到EOF或其他錯誤,其值爲false。現在我的猜測是,由於cin跳過空格,像\n這樣的字符不會被存儲。我想要做的是這樣的:如何將' n'添加到while(cin >> x)成語中?

int x; 

while((cin >> x) and x != '\n') 
    // do stuff 

這樣當cin遇到流中的換行符,它離開輸入迴路(因爲它通常會用說,EOF做)。

+1

它不一定返回左操作數。在這種情況下,它的確如此。 –

+0

你是否試圖改變成語只響應''\ n''或添加''\ n''到一般cin對'EOF'等東西的響應? – Jordan

+1

也許你應該檢查'x'確實是什麼,如果你只按回車。 –

回答

6

使用>>運算符將無法正常工作,因爲正如您所說,它會跳過包括換行符在內的空白字符。

你可以做的是使用std::getline讀取一行,然後你可以從std::stringstream讀取行中的所有輸入。

std::string line; 
if (std::getline(std::cin, line)) { 
    std::istringstream ss(line); 
    int x; 
    while (ss >> x) { 
     //.... 
    } 
} 
相關問題