我有一个std::string和一个int.我想将整数的ASCII(字符串文字)十六进制表示连接到std::string.
例如:
std::string msg = "Your Id Number is: ";
unsigned int num = 0xdeadc0de; //3735929054
Run Code Online (Sandbox Code Playgroud)
所需的字符串:
std::string output = "Your Id Number is: 0xdeadc0de";
Run Code Online (Sandbox Code Playgroud)
通常情况下,我只是使用printf,但我不能用std :: string做这个(我可以吗?)
有关如何做到这一点的任何建议?
出于调试目的,我经常将指针值(大多数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');
Run Code Online (Sandbox Code Playgroud)
但编译器似乎并没有弄清楚如何处理该值.char在这种情况下铸造是否正确?或者更安全的方法是什么?
使用Visual C++和Qt 4.7.4.
编辑
qulonglong按建议使用
qulonglong p = (qulonglong)this;
return QString("0x%1").arg(p, 8, '0');
Run Code Online (Sandbox Code Playgroud)
产生编译器错误消息(错误C2666).