QTextStream stdin readline不会暂停输入

时间:2014-10-04 10:43:54

标签: c++ qt4 qtextstream

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

#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;,则会暂停。

为什么此代码的行为与此类似,我如何获得我想要的行为?

1 个答案:

答案 0 :(得分:4)

缓冲区仍然有'\n'接受的结束字符cin.readLine(); - 在执行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.skipWhiteSpace()之前添加cin.readLine(),正如我在'\ n'字符仍处于缓冲区之前所说的那样,该方法正在摆脱它。