std::stringstream ss;
int number = 0x12345678;
ss << std::hex << number;
cout << ss.str();
这将产生12345678
我希望将其设为0x12345678
。如何在0x
前面加ss.str()
?
答案 0 :(得分:3)
执行此操作最简单的方法是更改stringstream ss
的格式:使其自动在std::showbase
前面添加数字基数:
#include <sstream>
#include <iostream>
int main()
{
std::stringstream ss;
int number = 0x12345678;
ss << std::showbase << std::hex << number; // prepends the 0x automagically
std::cout << ss.rdbuf(); // empties ss
}
请注意,我将输出从cout << ss.str()
更改为cout << ss.rdbuf()
。这会修改流ss
(之后为空),但不需要像OP的示例中那样复制。
一旦你将数字放入字符串流中,我就没有简单的方法在这个字符串流中添加0x
。然后,您可以在将流的内容打印到cout
:
std::cout << "0x" << ss.rdbuf();