Comment imprimer la chaîne literal et QString avec qDebug?

y a-t-il un moyen facile d'obtenir les travaux suivants? Y a-t-il une classe d'aide dans Qt qui prépare la chaîne qDebug?

QString s = "value";
qDebug("abc" + s + "def");
24
demandé sur Meysam 2013-08-25 12:44:28
la source

6 ответов

il n'y a pas vraiment de moyen facile dont je sois au courant. Vous pouvez le faire:

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

ou

QString s = "value";
qDebug("abc" + s.toLatin1() + "def");
18
répondu Greenflow 2013-08-25 12:50:33
la source

vous pouvez utiliser ce qui suit:

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

nospace() est d'éviter d'imprimer des espaces après chaque argument (ce qui est par défaut pour

Selon Qt Core 5.6 documentation vous devez utiliser qUtf8Printable()<QtGlobal> en-tête d'impression QStringqDebug.

Vous devez faire comme suit:

QString s = "some text";
qDebug("%s", qUtf8Printable(s));

ou plus court:

QString s = "some text";
qDebug(qUtf8Printable(s));

Voir:

8
répondu Krzysiek 2016-04-25 01:38:09
la source

Option 1: Utilisez le mode par défaut de qDebug d'un format C-string et d'une liste d'arguments variables (comme printf):

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

Option 2: Utilisez la version C++ avec < < operator:

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

Référence: https://qt-project.org/doc/qt-5-snapshot/qtglobal.html#qDebug

6
répondu bleater 2014-12-15 10:19:46
la source

il suffit de réécrire votre code comme ceci:

QString s = "value";
qDebug() << "abc" << s << "def";
3
répondu troyane 2013-08-25 12:57:35
la source

je sais que cette question est un peu vieille, mais elle apparaît presque en haut lors de la recherche dans le web. On peut surcharger l'opérateur pour qDebug (plus spécifique pour QDebug) pour qu'il accepte les chaînes std::comme ceci:

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

C'est chose depuis des années dans tous mes projets, j'ai failli oublier, il est toujours pas là par défaut.

après cela, l'utilisation de << pour qDebug () est beaucoup plus utilisable imho. Vous pouvez même mélanger QString et std::string. Certains supplémentaires(mais pas vraiment intended) feature est, que vous pouvez parfois jeter dans les entiers ou d'autres types qui permettent la conversion implicite en std::string .

0
répondu JAV 2017-06-22 10:19:06
la source

Autres questions sur