gpt4 book ai didi

C++ - getline stdin EOF 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:22 25 4
gpt4 key购买 nike

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

我有一些文本行(其中有空格),我想让程序从标准输入接受,然后在遇到(模拟的)EOF 时停止,因为 Ctrl + < 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。

在此先感谢您提供的任何帮助。

最佳答案

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

你在终端试过了吗?

关于C++ - getline stdin EOF 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30166692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com