4

私のプログラムは、QByteArray型のいくつかの変数を使用して、データ(バイト)を格納しています。そのバイトはおそらく'\0'、1、...のような特殊文字であるため、デバッグ時に特殊文字の後のすべての要素を表示することはできません。std :: vectorを使用すると、すべての要素を表示できます。QByteArrayを使用する必要がありますが、デバッグ時にこの変数のすべての要素を表示できません。助けて、plz!ありがとう!

例:QByteArray bytes(4、'\ 0'); さて、デバッグすると、「」が表示されます。しかし、私は「'\ 0'、'\ 0'、'\ 0'、'\0'」またはこのようなものを見たいです。

QDateTimeでも同じ問題があります。しかし、私はこのヘルプによって解決しました:http ://www.qtcentre.org/threads/32336-View-QDate-and-QDateTime-in-VisualStudio-debugger

このリンクは役立つかもしれませんが、これは私の問題を解決しません:http: //qt-project.org/wiki/IDE-debug-helpers

例:

QByteArray ba("Hello"); //debuging, see: ba = "Hello"     
ba.append('\0');     
ba.append("a message"); //we just see: ba = "Hello"   
4

2 に答える 2

2

これに近いことを行うメソッドが見つからなかったので、私が書かなければならなかったコードの一部をここに寄稿します: QByteArray を意味のある QString としてPython が行う方法で表示します: ascii はそのまま保持され、特別な char は次のように表示されます。 16 進コード

誰かがより良い方法を知っているなら! (ここではQT 4.6です)

QString toDebug(const QByteArray & line) {

    QString s;
    uchar c;

    for ( int i=0 ; i < line.size() ; i++ ){
        c = line[i];
        if ( c >= 0x20 and c <= 126 ) {
            s.append(c);
        } else {
            s.append(QString("<%1>").arg(c, 2, 16, QChar('0')));
        }
    }
    return s;
}

そのような:

QByteArray a;
a.append("et");
a.append('\0');
a.append("voilà");
qDebug() << toDebug(QByteArray(a));

戻り値:

"et<00>voil<e0>"
于 2012-10-16T11:57:48.700 に答える
1

デバッグのために、QBytearray を QString に変換して出力を確認できます。

例えば:

QByteArray bArray;

QString str = "";

str.append(bArray);

QDebug() << str ; // this will display the content in your console/application output  window

これで問題が解決することを願っています。

于 2012-08-31T05:26:52.387 に答える