我需要在控制台中打印十六进制和十进制值。我用下面的一段代码来做到这一点。
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)
但我以十六进制格式获取这两个值。如何重置字符串流?
如何重置字符串流?
格式标志是粘性的。
您可以保存旧格式标志以在以后恢复它们:
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)