我是C++的新手,我正在開發一個基本的C++項目。C++ - getline stdin EOF不工作
我有,我想使程序從標準輸入接受,然後停止文本(在他們的空白)的部分線路,當它遇到因爲按Ctrl +d的(模擬)EOF。
我擡起頭,嘗試給出的解決方案here和here。他們的工作,即在我打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。
在此先感謝您提供的任何幫助。
此問題發佈於2015年5月,錯誤依然存在於Eclipse Oxygen Release(4.7.0) Build ID:20170620-1800。 :( – Yankee