gpt4 book ai didi

c++ - QTextStream stdin readline 不暂停输入

转载 作者:行者123 更新时间:2023-11-30 01:51:25 26 4
gpt4 key购买 nike

这是一个非常简单的应用程序来说明我遇到的问题。

#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; 然后它会暂停。

为什么这段代码会这样,我如何获得我想要的行为?

最佳答案

可能缓冲区仍有一个结束符 '\n'cin.readLine(); 接受 - 尝试用 刷新它cin.flush() 在执行 cin.readLine() 之前。


此代码有效:

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++ - QTextStream stdin readline 不暂停输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26192013/

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