为什么有些C标准库`operator <<`函数将它们的流宽度重置为0?

如C标准的[ostream.inserters.character]部分所述,在将char或字符串插入流后,流的宽度设置为0:

template<class traits>
  basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>& out,const unsigned char* s);
Do lots of sensible and expected things...
Calls width(0).

为什么C标准规定了对宽度(0)的调用

更改流宽度而不将其重置为原始值的合理性是什么?
(据我所知,流插入运算符保留了流的所有其他属性.)

一个相关的问题here,它表明了这引起的混乱,但没有解释为什么标准规定了这种行为.

解决方法

它似乎不是“某些”运算符<<函数,通常是插入器和提取器(21.4.8.9).见 c++ standardTony D’s answer的明智推理

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...