使用cout
时,<iomanip>
标头中定义的默认格式化程序是什么?换句话说,一旦我使用fixed
将格式化程序设置为cout << fixed << setPrecision(2)
,我该如何更改它?或者,我将它更改回到?
答案 0 :(得分:5)
答案是C ++ 11中的std::defaultfloat
。要在C ++ 03中实现这一点,你可以做到
cout.unsetf(std::ios_base::floatfield);
答案 1 :(得分:4)
std::fixed
的反面是std::scientific
。
(你在this great answer中找到一个很好的操纵器列表。)
答案 2 :(得分:1)
您可以使用resetiosflags()
取消设置任何标记。
答案 3 :(得分:1)
std::fixed
的反面是std::scientific
。那可能适合你。
但是,如果您想恢复更多标志,或者您需要之前的状态,而不是默认状态,则可以使用更好的解决方案:
std::resetiosflags
操纵器可让您将特定标志重置为默认值;
这两个ios::flags
函数可以保存和恢复格式标志的先前值。