读取输入时Qt控制台应用程序问题

时间:2016-02-23 14:31:59

标签: c++ qt

当我尝试从Qt控制台应用程序获取输入时,程序无法正常工作。以下按预期工作:

#include <QCoreApplication>
#include <QTextStream>

QTextStream cout(stdout);
QTextStream cin(stdin);

int main()
{
    QString msg("Hello world!");
    cout << msg << endl;

    return 0;
}

输出:

Hello world!

但是,只要我添加,

... 
int main()
{
    QString msg("Hello world!");
    cout << msg << endl;

    cout << "Enter new message: ";
    msg = cin.readLine();
    cout << endl << msg << endl;

    return 0;
}

输出:

Hello world!
显示

但程序在显示输入文本的提示之前等待输入,而不是先显示提示然后再读取输入。输入的文本与输入时的提示一起显示(之后)。

我一直试图解决这个问题几个小时无济于事。

2 个答案:

答案 0 :(得分:3)

你应该刷新输出流:

cout.flush();

也可以写

(cout << "Enter new message: ").flush();

答案 1 :(得分:1)

您也可以使用:

cout << "Enter new message: " << flush;
  • std::flush只需刷新stdout信息流。
  • std::endl除了向stdout添加新行外,它还会刷新流。