有没有简单的方法可以让以下工作?我的意思是在Qt
中是否有任何辅助类可以为qDebug
准备字符串?
QString s = "value";
qDebug("abc" + s + "def");
您可以使用以下内容:
qDebug().nospace() << "abc" << qPrintable(s) << "def";
nospace()
的作用是避免在每个参数后打印空格(这是 qDebug()
的默认行为)。
我并不知道有什么非常简单的方法。你可以这样做:
QByteArray s = "value";
qDebug("abc" + s + "def");
或者QString s = "value";
qDebug("abc" + s.toLatin1() + "def");
<QtGlobal>
头文件的qUtf8Printable()
来打印带有qDebug
的QString
。您应该按照以下步骤操作:QString s = "some text";
qDebug("%s", qUtf8Printable(s));
QString s = "some text";
qDebug(qUtf8Printable(s));
请参见:
qUtf8Printable
和qPrintable
而不是.toLatin1().constData()
和C++的<<
运算符。 - kimbaudi选项1:使用qDebug的默认模式,即类似于printf的C字符串格式和变量参数列表:
qDebug("abc%sdef", s.toLatin1().constData());
选项2:使用具有重载<<运算符的C++版本:
#include <QtDebug>
qDebug().nospace() << "abc" << qPrintable(s) << "def";
参考资料:https://qt-project.org/doc/qt-5-snapshot/qtglobal.html#qDebug
该链接是关于Qt的一个调试工具,它可以将信息打印到控制台或日志文件中,以帮助开发人员进行调试和排错。该工具在Qt应用程序开发和维护过程中非常有用。QString s = "value";
qDebug() << "abc" << s << "def";
inline QDebug operator<<(QDebug dbg, const std::string& str)
{
dbg.nospace() << QString::fromStdString(str);
return dbg.space();
}