作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
出于调试目的,我经常将指针值(主要是 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'));
它将使用正确的指针类型和大小(quintptr
和 QT_POINTER_SIZE
),并且总是在 "0x"
前缀。
注意事项:
要用零作为值的前缀,第四个参数需要是QChar('0')
。
要输出正确的位数,QT_POINTER_SIZE
需要加倍(因为每个字节需要 2 个十六进制数字)。
关于c++ - 如何将指针值转换为 QString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8881923/
我是一名优秀的程序员,十分优秀!