**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
6小时前关门了。
Improve this question
很抱歉问了这么一个令人尴尬的简单问题,可能有重复的,但我一直在争取我的方式通过大量的StackOverflow答案,不能让C++中的基本I/O工作。
我正在开发一个交互式程序,用户可以在其中输入行并接收返回的行。遗憾的是,有时候它并不等待用户输入,所以我尝试将我的代码简化为一个可重复性最小的示例:
#include<iostream>
int main() {
std::string line_cpp;
while (1) {
std::getline(std::cin, line_cpp);
std::cout << "a" << std::endl;
}
}
在我的系统(g++(Ubuntu 7.5.0- 3ubuntu 1 ~18.04),Gnome终端3.28.1,zsh 5.4.2)上,当通过g++ code.cpp -o code; ./code
编译和运行时,会发生这种情况:
- 预期行为为:它应该等待用户键入一行并按Enter键,然后使用
a
响应,然后再次等待用户 - 正如给定的那样,代码等待几秒钟,然后无限地打印字母
a
- 当我按照建议here和here在
std::getline
之前添加行std::cin.ignore();
时,会发生同样的情况 - 当我按照建议here在
std::getline
之前添加行std::ws(std::cin);
时,它将打印出2个a
,然后等待用户输入,按Enter键后,它将无限打印a
Edit:line_cpp
在每次迭代时都是空字符串。
1条答案
按热度按时间lb3vh1jj1#
由于某种原因,只要关闭我的终端并再次打开它就解决了这个问题。程序的行为就像预期的那样。
也许发生的事情是,我搞砸了终端的
cat
吨一个二进制文件,其中包含控制代码,或其他事情发生。