c++ qt qstring qdebug

c++ - ¿Cómo imprimir string literal y QString con qDebug?



qt (6)

¿Hay alguna manera fácil de obtener el siguiente trabajo? Quiero decir, ¿hay alguna clase auxiliar en Qt que prepare la cadena para qDebug ?

QString s = "value"; qDebug("abc" + s + "def");


De ninguna manera realmente fácil estoy consciente. Tu puedes hacer:

QByteArray s = "value"; qDebug("abc" + s + "def");

o

QString s = "value"; qDebug("abc" + s.toLatin1() + "def");


Opción 1: use el modo predeterminado de qDebug de un formato de cadena C y una lista de argumentos variables (como printf):

qDebug("abc%sdef", s.toLatin1().constData());

Opción 2: usar la versión C ++ con el operador << sobrecargado:

#include <QtDebug> qDebug().nospace() << "abc" << qPrintable(s) << "def";

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


Puedes usar lo siguiente:

qDebug().nospace() << "abc" << qPrintable(s) << "def";

El nospace() es para evitar la impresión de espacios después de cada argumento (que es el predeterminado para qDebug() ).


Sé que esta pregunta es un poco antigua, pero parece estar en la parte superior cuando la busco en la web. Uno puede sobrecargar al operador de qDebug (más específico para QDebug) para que acepte std :: cadenas como esta:

inline QDebug operator<<(QDebug dbg, const std::string& str) { dbg.nospace() << QString::fromStdString(str); return dbg.space(); }

Esto es durante años en todos mis proyectos, casi me olvido de que todavía no está allí por defecto.

Después de eso, el uso de << para qDebug () es mucho más útil. Incluso puedes mezclar QString y std :: string. Alguna característica adicional (pero no realmente intencionada) es que a veces puede arrojar números enteros u otros tipos que permitan la conversión implícita a std :: string.



Simplemente reescribe tu código así:

QString s = "value"; qDebug() << "abc" << s << "def";