如何准备std::字符串流

How do you prepend to std::stringstream?

本文关键字:字符串 std 何准备      更新时间:2023-10-16
std::stringstream ss;
int number = 0x12345678;
ss << std::hex << number;
cout << ss.str();

这将产生12345678

我想把它做成0x12345678。如何在ss.str()前面准备0x

最简单的方法可能是更改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();