gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 22:33:01 26 4
gpt4 key购买 nike

出于调试目的,我经常将指针值(主要是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com