c++ - 如何将指针值转换为 QString?

标签 c++ qt pointers qstring

出于调试目的,我经常将指针值(主要是 this)输出到 qDebug:

qDebug("pointer of current object = 0x%08x",this);,使用 "%08x"作为格式字符串,并简单地将 this 作为参数传递。

如何将指针值转换为 QString?

这是我目前得到的:

char p = (char)this;
return QString("0x%1").arg(p, 8, '0');

但编译器似乎不知道如何处理该值。在这种情况下,转换为 char 是否正确?或者有什么更安全的方法来做到这一点?

在 Qt 4.7.4 中使用 Visual C++。

编辑

按照建议使用 qulonglong

qulonglong p = (qulonglong)this;
return QString("0x%1").arg(p, 8, '0');

产生编译器错误消息(error C2666) .

最佳答案

使用 QString::arg() :

MyClass *ptr = new MyClass();
QString ptrStr = QString("0x%1").arg((quintptr)ptr, 
                    QT_POINTER_SIZE * 2, 16, QChar('0'));

它将使用正确的指针类型和大小(quintptrQT_POINTER_SIZE),并且总是在 "0x" 前缀。

注意事项:
要用零作为值的前缀,第四个参数需要是QChar('0')
要输出正确的位数,QT_POINTER_SIZE 需要加倍(因为每个字节需要 2 个十六进制数字)。

关于c++ - 如何将指针值转换为 QString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8881923/

相关文章:

javascript - 将对象+骨架从 blender 导出到 Threejs 并手动移动骨骼

c++ - 如何使用 google test 对 gRPC 异步 C++ 客户端功能进行单元测试

c++ - QMessageBox 在关闭时删除

c++ - 如何让QScrollArea根据QDialog改变大小?

c - 如何从 C 中的外部函数操作 char 指针的值?

通过引用调用而不显式地将函数参数声明为指针?

c++ - 查找一定范围内的网格单元

C++ 揭秘第 13 章 (2004) Jeff Kent : Ifstream program does not return expected output

qt - Material 主题似乎在 QML 中不起作用

c++ - 创建图时内存写入异常