【问题标题】:QtCreator 2.4.1 console inputQtCreator 2.4.1 控制台输入
【发布时间】:2012-02-24 12:55:28
【问题描述】:

我对 C++ 和 QT 有点陌生。 尝试在 QtCreator 中运行一个非常简单的程序,它在 WinXP 上使用控制台输入:

#include <QString>
#include <QTextStream>

int main() {
    QTextStream streamOut(stdout);
    QTextStream streamIn(stdin);
    QString s1("This "), s2("is a "), s3("string.");
    QString s4 = s1 + s2 + s3;
    streamOut << s4 << endl;
    streamOut << "The length of that string is " << s4.length() << endl;
    streamOut << "Enter a sentence with whitespaces: " << endl;
    s4 = streamIn.readLine();
    streamOut << "Here is your sentence: \n" << s4 << endl;
    streamOut << "The length of your sentence is: " << s4.length() << endl;
    return 0;
}

问题是原生 QTCreator 的应用程序输出,顾名思义,不支持输入内容。这是应用程序输出:

开始 C:\QProject\test-build-desktop-Qt_4_8_0_for_Desktop_-MinGW_Qt_SDK___>z>>\debug\test .exe...

这是一个字符串。

那个字符串的长度是 17

输入一个带空格的句子:

Qml 调试已启用。只能在安全的环境中使用!

我尝试在 Projects>Desktop>Run 中检查“在终端中运行”,因为这里建议的类似问题的一些答案出现了,终端显示了,但它似乎无论如何都没有与程序交互。终端输出:

按回车键关闭此窗口...

【问题讨论】:

  • 您能否将您的cincout 放在main 的范围内,看看是否有区别? (通常不是最好的命名理念,人们会认为他们是std::cin/out。)
  • 是的,试图让我的问题更清楚,谢谢。

标签: qt qt-creator


【解决方案1】:

我会说检查Run in terminal 是正确且必要的。

令人惊讶的是,您没有收到任何编译错误,因为第 8 行有一个错误:

cout << "Enter a sentence: "<<;

最后一个&lt;&lt;是错误的。

更正你的代码,我明白了:

#include <QString>
#include <QTextStream>
QTextStream cout(stdout);
QTextStream cin(stdin);

int main() {
    QString s2;
    cout << "Enter a sentence: ";
    s2 = cin.readLine();
    cout << "Here is your sentence:" << s2 << endl;
    cout << "The length of your sentence is: " << s2.length() << endl;
    return 0;
}

在我的电脑上运行良好(WinXP、QtCreator 2.2.0)。

您确定您的 Qt 项目是正确的并且您正在编译正确的文件吗?

【讨论】:

  • 并且还在cout &lt;&lt; "Enter a sentence: ";之后添加cout.flush(); ...无论如何,我只需要在我的项目文件中添加CONFIG += console并且控制台可以正常工作。
猜你喜欢
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多