微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么有些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的明智推理

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐