运行函数时,控制台中不显示输出

时间:2016-02-12 06:47:48

标签: c++ qt

我遇到一个问题,在通过某个功能进行操作时,我似乎无法在控制台中显示输出。

通过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

}

2 个答案:

答案 0 :(得分: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转换为<<运营商可用于ostream的数据类型。另请参阅How to convert QString to std::string?

答案 1 :(得分:0)

如上所述,X.toString();只会将QString返回给调用者,然后根据您尝试实现的目标,您可以:

  • 使用cout&lt;&lt;打印到控制台...

  • 使用qDebug()&lt;&lt;

    将其打印到Qt Creator中的“应用程序输出”窗格...

    (有关详细信息,请参阅QDebug Class reference,它是非常常见的调试技术)