我遇到一个问题,在通过某个功能进行操作时,我似乎无法在控制台中显示输出。
通过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
}
答案 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,它是非常常见的调试技术)