我是C ++的新手,我正在开发一个基本的C ++项目。
我有一些文本行(其中有空格)我希望程序从标准输入接受,然后因为 Ctrl + <遇到(模拟)EOF时停止KBD> d
我已经查找并尝试了here和here给出的解决方案。它们正常工作,即在我按 Ctrl + D 后,while循环中的代码停止执行但由于某种原因,以下代码行不会被执行。
我已尝试过各种方法来做到这一点,但我一直遇到同样的问题。
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。
提前感谢您提供的任何帮助。