我的程序使用QByteArray类型的一些变量来包含数据(字节)。那些字节可能是特殊字符,如'\ 0',1,......所以我在调试时看不到特殊字符后面的所有元素。如果我使用std :: vector,我可以看到所有元素。我必须使用QByteArray但是在调试时我看不到这个变量的所有元素。帮帮我,PLZ! 谢谢!
示例:QByteArray字节(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"
答案 0 :(得分:2)
我在这里贡献了一段我必须编写的代码,因为我找不到任何接近这个的方法:以python的方式显示QByteArray作为有意义的QString :< em> ascii保留为此,特殊字符显示为十六进制代码。
如果有人知道更好的方法! (这是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>"
答案 1 :(得分:1)
对于调试,您可以将QBytearray转换为QString并查看输出。
例如:
QByteArray bArray;
QString str = "";
str.append(bArray);
QDebug() << str ; // this will display the content in your console/application output window
希望这能解决您的问题。