在cout中与`fixed`相反的是什么?

时间:2011-09-14 19:53:57

标签: c++ cout formatter iomanip

使用cout时,<iomanip>标头中定义的默认格式化程序是什么?换句话说,一旦我使用fixed将格式化程序设置为cout << fixed << setPrecision(2),我该如何更改它?或者,我将它更改回

4 个答案:

答案 0 :(得分:5)

答案是C ++ 11中的std::defaultfloat。要在C ++ 03中实现这一点,你可以做到

cout.unsetf(std::ios_base::floatfield);

请参阅Really, what's the opposite of "fixed" I/O manipulator?

答案 1 :(得分:4)

std::fixed的反面是std::scientific

(你在this great answer中找到一个很好的操纵器列表。)

答案 2 :(得分:1)

您可以使用resetiosflags()取消设置任何标记。

答案 3 :(得分:1)

std::fixed的反面是std::scientific。那可能适合你。

但是,如果您想恢复更多标志,或者您需要之前的状态,而不是默认状态,则可以使用更好的解决方案:

  1. std::resetiosflags操纵器可让您将特定标志重置为默认值;

  2. 这两个ios::flags函数可以保存和恢复格式标志的先前值。