C ++ - getline stdin EOF无效

时间:2015-05-11 11:38:49

标签: c++ eclipse

我是C ++的新手,我正在开发一个基本的C ++项目。

我有一些文本行(其中有空格)我希望程序从标准输入接受,然后因为 Ctrl + <遇到(模拟)EOF时停止KBD> d

我已经查找并尝试了herehere给出的解决方案。它们正常工作,即在我按 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。

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

这是一个已知的日食错误。 https://bugs.eclipse.org/bugs/show_bug.cgi?id=159803

你在终端试过了吗?