【问题标题】:No output display in console when running a function运行函数时控制台中没有输出显示
【发布时间】:2016-05-23 05:43:51
【问题描述】:

我有一个问题,通过函数执行此操作时,我似乎无法在控制台中显示输出。

通过Main() 执行时有效,但通过函数执行时为空白。

下面是我的一些代码:

#include "ConferencePaper.h"
#include "JournalArticle.h"
#include "Reference.h"
#include <QDebug>
#include <QTextStream>

QTextStream cout(stdout);

int main()
{
//QApplication app(argc, argv);
QStringList list1;
list1 << "This is a test";

Reference a("Marius",list1,1,"c"); //Instance of the Reference class created      with parameter values
cout << "Title: " << a.getTitle(); //This works fine
a.toString();

return 0;

}
//Reference Function

#include <QString>
#include <QStringList>
#include <QTextStream>
#include "Reference.h"

Reference::Reference(QString ti, QStringList as, int ye, QString id): title(ti), authors(as), year(ye), refID(id){}

QString Reference::toString()
{
return QString("Title: %1\n") .arg(getTitle()); //Does not display anything

}

【问题讨论】:

  • 您如何期望toString 显示任何内容?它只是向调用者返回一个QString,你似乎没有提到任何IO函数。
  • 谢谢安德烈亚斯。有点金发碧眼的时刻:-)

标签: c++ qt


【解决方案1】:

在您的toString() 方法中:

QString Reference::toString() {
  return QString("Title: %1\n") .arg(getTitle()); //Does not display anything
}

没有什么可以导致在控制台上打印任何内容。作为该方法的结果,您只是返回字符串。

要显示某些内容,您需要输出从方法返回的字符串,例如在你的main() 函数中,比如

cout << a.toString().toUtf8().constData();

cout << a.toString().toLocal8Bit().constData();

请注意,您需要将QString 转换为&lt;&lt; 运算符可用于ostream 的数据类型。另见How to convert QString to std::string?

【讨论】:

  • 它应该是 toLocal8Bit() 而不是 toUtf8() 才能在 Windows 和旧版 Linux 上正常工作。
【解决方案2】:

上面多次提到,X.toString();只会将 QString 返回给调用者,然后根据您要实现的目标,您可以:

  • 使用 cout 将其打印到控制台

  • 使用 qDebug() 将其打印到 Qt Creator 中的应用程序输出窗格

    (详见QDebug Class reference,这是一种很常见的调试技术)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2014-06-23
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多