c++ - 在调试过程中如何查看 Qt 对象 QByteArray 的内容?

标签 c++ visual-studio-2010 qt visual-studio-debugging qbytearray

我的程序使用一些 QByteArray 类型的变量来包含数据(字节)。这些字节可能是特殊字符,如'\0'、1、...所以我在调试时看不到特殊字符后的所有元素。如果我使用 std::vector,我可以看到所有元素。我必须使用 QByteArray 但在调试时我看不到这个变量的所有元素。请帮助我! 谢谢!

例子: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"   

最佳答案

我在这里贡献了一段我不得不写的代码,因为我找不到任何方法来做类似的事情:将 QByteArray 显示为有意义的 QString 以 python 会做的方式:< 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>"

关于c++ - 在调试过程中如何查看 Qt 对象 QByteArray 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12209046/

相关文章:

c++ - 指向使用 Rcpp 对象创建的 C++ 类的指针

c++ - 确定 std::function 的返回类型

c++ - 在 C++ 中使用前向声明的错误

c - 相同的结构不同的文件

c++ - 多线程 UI 的最佳方式?

c++ - 编译器在哪里存储 C++ 类的方法?

visual-studio-2010 - 如何在调试时查看转换后的 web.config (SlowCheetah)

c# - web.config 转换从 web.template.xml 不工作

c++ - 如何使用 Qt 设计 IDE?

android - 在 Android 安装上使用 Qt