你如何前置到std :: stringstream?

时间:2014-04-20 23:49:40

标签: c++

std::stringstream ss;

int number = 0x12345678;

ss << std::hex << number;

cout << ss.str();

这将产生12345678

我希望将其设为0x12345678。如何在0x前面加ss.str()

1 个答案:

答案 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();