使用iomanip匹配printf格式

Jon*_*Mee 7 c++ floating-point printf cout modifiers

我有一些旧的C代码,我试图复制C++中的行为.它使用printf修饰符:"%06.02f".

我天真地认为这iomanip同样有能力,并做了:

cout << setfill('0') << setw(6) << setprecision(2)
Run Code Online (Sandbox Code Playgroud)

当我尝试输出测试号123.456时,printf产量:

123.46

cout收益率:

1.2 + E02

有什么我可以做的iomanip来复制这个,还是我必须回去使用printf

[ 实例 ]

Die*_*ühl 2

三个 C 格式说明符映射到 C++ IOStreams 中相应的格式设置:

  • %f-> std::ios_base::fixed(定点表示法)通常使用out << std::fixed.
  • %e-> std::ios_base::scientific(科学记数法)通常使用out << std::scientific.
  • %g-> 默认设置,通常使用out.setf(std::fmtflags(), std::ios_base::floatfield)C++11 及更高版本或使用 C++11 及更高版本进行设置out << std::defaultfloat。默认格式试图产生其他格式中的“最佳”格式,假设使用固定数量的数字。

精度、宽度和填充字符与您已经说明的方式相匹配。