c++ - QtCreator:将字符串打印到终端的最佳方法是什么?

标签 c++ qt c++11 qt-creator terminator

我正在学习在lubuntu 17.10上使用Qtcreator,并希望将一些输出输出到终端。我遇到了麻烦,因此将程序简化为基本的Hello World,以将单个字符串输出到终端。目前,我正在使用以下代码:

#include <QCoreApplication>
#include <iostream>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    std::cout << "HELLO WORLD" << std::endl;
    return a.exec();
}

我的.pro文件包含以下几行,它们看起来可能会影响终端行为:
QT -= gui

CONFIG += c++11 console

我还在运行设置中选中了“在终端中运行”。

这建立没有问题。当我运行它时,终端弹出(我正在使用terminator),它是空白的,带有闪烁的光标。要显示字符串,我必须按<Enter>。出现字符串,但是程序没有结束。我在终端中没有收到“按Enter键以关闭窗口”类型的消息,该消息指示程序已结束,我必须“手动”关闭终端。另外,在“应用程序输出”窗口中,它显示:
/home/user/path_to_my_program crashed.

大概是因为我强行关闭终端。我真的很想弄清楚为什么它没有将字符串打印到终端并干净地退出。

我按下ENTER(预先为空白)后的终端:

enter image description here

最佳答案

这对于Qt控制台应用程序是正常的。它正在运行一个messageloop并完全在做应做的事情。
要将文本发送到控制台,可以使用std::cout,qout或qDebug()。后者用于调试。更多信息可以在这里找到。它还包含您遇到的陷阱。 Qt console Application

关于c++ - QtCreator:将字符串打印到终端的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48732628/

相关文章:

c++ - 删除特定字符后的所有内容

c++ - 循环进度指示

c++ - 使用 std::bind 时从 std::function 获取函数指针

c++ - tuple - get_or 辅助函数

c++ - 使用 cmake 将依赖项传播到仅 header 的 ExternalProject

c++ - QT 上传(PUT)文件

c++ - 虚函数继承

C++11 反向基于范围的 for 循环

c++ - is_same 在将类模板实例化与其基类模板进行比较时返回 false?