2015-05-11 76 views
2

我是C++的新手,我正在開發一個基本的C++項目。C++ - getline stdin EOF不工作

我有,我想使程序從標準輸入接受,然後停止文本(在他們的空白)的部分線路,當它遇到因爲按Ctrl +d的(模擬)EOF。

我擡起頭,嘗試給出的解決方案herehere。他們的工作,即在我打012循環後代碼停止執行Ctrl + D但由於某些原因,下面的代碼行不會被執行。

我試過不同的方法來做到這一點,但我不斷收到同樣的問題。

string line; 
int i = 0; 
while (true) { 
    if (getline(cin, line)) { 
     A[i] = line; 
     cout << A[i] << endl; //executes as expected 
     i++; 
    } else { 
     break; 
    } 
} 
cout << "exited" << endl; //not executed even after ctrl+d 

這裏是我試過另一種方法:

string line; 
int i = 0; 
while (getline(cin, line)){ 
    //cin.ignore(); 
    A[i] = line; 
    cout << A[i] << endl; //executes as expected 
    i++; 

} 
cout << "exited" << endl; //still not executed 

樣品輸入:

DUCHESS 26 
MARIE 8 
BERLIOZ 8 
TOULOUSE 7 
THOMAS 28 

PS:我在Ubuntu上使用Eclipse CDT。

在此先感謝您提供的任何幫助。

+0

此問題發佈於2015年5月,錯誤依然存在於Eclipse Oxygen Release(4.7.0) Build ID:20170620-1800。 :( – Yankee

回答