QTextStream stdin读取行未暂停输入
QTextStream stdin readline not pausing for input
这里有一个非常简单的应用程序来说明我遇到的问题。
#include <QTextStream>
int main()
{
QTextStream cin(stdin);
QTextStream cout(stdout);
QString test;
cout << "Enter a value: ";
cout.flush();
cin >> test;
cout << "Enter another value: ";
cout.flush();
test = cin.readLine();
cout << test;
return 0;
}
我希望执行暂停并等待test = cin.readline();
的输入,但它没有。如果我删除cin >> test;
,那么它将暂停。
为什么这个代码的行为是这样的?我如何获得我想要的行为?
可能缓冲区仍然有一个cin.readLine();
接受的结束线字符'n'
-在执行cin.readLine()之前,尝试用cin.flush()
刷新它。
此代码正在工作:
QTextStream cin(stdin);
QTextStream cout(stdout);
QString test;
cout << "Enter a value: ";
cout.flush();
cin >> test;
cout << "Enter another value: ";
cout.flush();
cin.skipWhiteSpace(); //Important line!
test = cin.readLine();
cout << test;
return 0;
您只需要在cin.readLine()
之前添加cin.skipWhiteSpace()
,正如我之前所说的,"\n"字符仍在缓冲区中,该方法正在消除它
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 暂停输入C
- Cin 不会暂停输入,尽管同时使用了 cin.clear() 和 cin.ignore()
- cin.ignore() 输入两次以获得一次暂停
- 当一长串字符传递给第一个 cin 时,为什么不暂停第二个 cin 上的输入?
- 在不暂停贪吃蛇游戏的情况下获取输入
- 暂停以用户更正输入
- 如何在不暂停循环的情况下使用字符输入停止循环
- QTextStream stdin读取行未暂停输入
- 不暂停代码的用户输入(c++控制台应用程序)
- 暂停循环操作,直到用户提供完整的输入