我有以下代码

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

输出是:
006464

如果我想让每个数字宽度为 4,我必须使用
out << setfill('0') << setw(4) << hex << 100 << sew(4) << 100 << std::endl;

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

c++ 是故意设计的吗?它的意图是什么?

最佳答案

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

关于c++ - <iomanip> 的不一致行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29938047/

10-11 10:41