<iomanip>的不一致行为

时间:2015-04-29 08:17:53

标签: c++ iomanip setw

我有以下代码

cout << setfill('0') << setw(4) << hex << 100 << 100 << std::endl;

输出结果为:

006464

如果我想让每个宽度为4的数字,我必须使用

out << setfill('0') << setw(4) << hex << 100 << sew(4) << 100 << std::endl;

但是如果我想用hex和setfill('0')打印每个数字,我只需要设置setfill('0')和std :: hex一次。

c ++是否故意设计这个?它的用意是什么?

1 个答案:

答案 0 :(得分:2)

是的,它是故意的。流操作在内部充满了由标准指定的字段宽度的重置。我认为没有什么好的答案。