2009-08-12 67 views
2
string s; 
getline(cin,s); 

while (HOW TO WRITE IT HERE?) 
{ 
    inputs.push_back(s);  
    getline(cin,s); 
} 

回答

8

因爲我懶得給一個完整的答案今天,我就貼什麼## C++真正有用的機器人Freenode上有說:

使用「,而(流! .eof()){}「幾乎肯定是錯誤的。使用流的狀態作爲測試值:while(std :: getline(stream,str)){}。爲了進一步解釋見http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.5

換句話說,你的代碼應該是

string s; 

while (getline(cin, s)) 
{ 
    inputs.push_back(s);  
} 
+2

+1。 C++中的一個(可惜的是很少)時間,正確的選擇是直接的和慣用的。 – 2009-08-12 03:47:59

1
string s; 
getline(cin,s); 

while (!cin.eof) 
{ 
     inputs.push_back(s);  
     getline(cin,s); 
} 
+1

是的,它的工作原理和是的,它回答了所述的問題,但我更喜歡coppro更好,我很害怕。除了更簡單和更易維護,如果發生其他I/O錯誤,coppro的答案將正確退出。 – 2009-08-12 03:50:41

+0

你說得對。我沒有通過「知道它的eof」部分。 – Tom 2009-08-12 13:33:43