重置 std::stringstream 格式标志

Aru*_*run 2 c++ stringstream

我需要在控制台中打印十六进制和十进制值。我用下面的一段代码来做到这一点。

std::stringstream ss;

ss << "0x" << std::uppercase << std::hex << 15;    
std::cout << ss.str() << std::endl;

ss.str("");
ss.clear();

ss << 15;
std::cout << ss.str() << std::endl;
Run Code Online (Sandbox Code Playgroud)

但我以十六进制格式获取这两个值。如何重置字符串流?

πάν*_*ῥεῖ 5

如何重置字符串流?

格式标志是粘性的。

您可以保存旧格式标志以在以后恢复它们:

std::stringstream ss;
auto oldFlags = ss.flags(); // <<

ss << "0x" << std::uppercase << std::hex << 15;    
std::cout << ss.str() << std::endl;

ss.flags(oldFlags); // <<

ss << 15;
std::cout << ss.str() << std::endl;
Run Code Online (Sandbox Code Playgroud)