如何使用qDebug打印字符串文字和QString?

Mey*_*sam 28 c++ qstring qt qdebug

有没有简单的方法来完成以下工作?我的意思是有没有帮助类Qt准备字符串qDebug

QString s = "value";
qDebug("abc" + s + "def");
Run Code Online (Sandbox Code Playgroud)

Kur*_*tyn 24

您可以使用以下内容:

qDebug().nospace() << "abc" << qPrintable(s) << "def";
Run Code Online (Sandbox Code Playgroud)

nospace()是为了避免在每个参数之后打印出空格(默认为qDebug()).

  • 根据文档,建议在qPrintable上使用qUtf8Printable,因为qDebug()(和朋友)期望UTF-8可能并不总是toLocal8Bits()(qPrintable调用返回) (2认同)

Gre*_*low 21

我不知道这么简单.你可以做:

QByteArray s = "value";
qDebug("abc" + s + "def");
Run Code Online (Sandbox Code Playgroud)

要么

QString s = "value";
qDebug("abc" + s.toLatin1() + "def");
Run Code Online (Sandbox Code Playgroud)


Krz*_*iek 11

Qt的核心5.6文档,你应该使用qUtf8Printable()<QtGlobal>头打印QStringqDebug.

你应该这样做:

QString s = "some text";
qDebug("%s", qUtf8Printable(s));
Run Code Online (Sandbox Code Playgroud)

或更短:

QString s = "some text";
qDebug(qUtf8Printable(s));
Run Code Online (Sandbox Code Playgroud)

看到:


ble*_*ter 6

选项1:使用qDebug的C字符串格式和变量参数列表的默认模式(如printf):

qDebug("abc%sdef", s.toLatin1().constData());
Run Code Online (Sandbox Code Playgroud)

选项2:使用带有重载<<运算符的C++版本:

#include <QtDebug>
qDebug().nospace() << "abc" << qPrintable(s) << "def";
Run Code Online (Sandbox Code Playgroud)

参考:https://qt-project.org/doc/qt-5-snapshot/qtglobal.html#qDebug