首页 > 后端开发 > C++ > std::setw() 和 Stringstreams:粘性操纵器与非粘性操纵器 — 有什么区别?

std::setw() 和 Stringstreams:粘性操纵器与非粘性操纵器 — 有什么区别?

Linda Hamilton
发布: 2024-12-11 12:37:11
原创
808 人浏览过

std::setw() and Stringstreams: Sticky vs. Non-Sticky Manipulators—What's the Difference?

操纵器与格式对象

在尝试构造字符串流时,出现了关于 std::setw() 行为的常见误解。假设它会永远影响字符串流是一个错误的假设,因为它在每次插入后都会重置。本文旨在澄清粘性和非粘性操纵器以及格式对象之间的区别,解决以下问题:

  • 为什么 std::setw() 以这种方式表现?
  • 还有其他类似的机械手吗行为?
  • std::ios_base::width() 和 std::setw() 在行为方面有何不同?
  • 在哪里可以找到有关此行为的明确文档在线?

粘性操纵器

std::ios_base 中的操纵器可以分为两类:

  • 返回对象的操纵器:这些操纵器不直接影响流对象,因此不表现出“粘性”。这包括 setw。
  • 返回流的操纵器:这些操纵器直接影响流对象,因此是“粘性的”,这意味着它们所做的修改将持续存在,直到被另一个操纵器显式更改为止。示例包括 setiosflags 和 setfill。

格式对象

格式对象用于临时更改流的格式属性。与操纵器相反,它们不直接影响流对象。 PutSquareBracket 格式对象就是一个例子,它允许临时修改格式而不影响永久状态。

结论

std::setw() 是唯一的在操纵器中,它是唯一非粘性的。缺乏关于其具体行为的文档可能是由于其与其他操纵器的相似性。然而,现实情况是,由于格式化输出操作中要求显式将宽度设置为零,它的行为有所不同。

以上是std::setw() 和 Stringstreams:粘性操纵器与非粘性操纵器 — 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板