是否有粘性操纵器的官方资源?

Is There an Official Resource for Sticky Manipulators

本文关键字:官方 资源 有粘性 操纵 是否      更新时间:2023-10-16

标准是否定义了哪些iomanip操作符是粘着的,哪些不是?

我发现自己一直在参考:https://stackoverflow.com/a/1533222/2642059

这是一个很好的答案,但甚至说:

on my version

再加上我在http://en.cppreference.com或http://www.cplusplus.com上找不到粘性的概念这一事实,使我怀疑这是否是一个实现定义的概念。

不是"official",但cppreference.com说,在std::setw

如果调用以下任何一个函数,流的width属性将被重置为零(即"未指定"):

    输入
    1. operator>>(basic_istream&, basic_string&)

    2. operator>>(basic_istream&, char*)

  • 输出
    1. basic_ostream::operator<<()的1-7重载(num_put::put()的第3阶段)(1-7是整数、布尔和指针重载)

    2. operator<<(basic_ostream&, char)operator<<(basic_ostream&, char*)

    3. operator<<(basic_ostream&, basic_string&)

    4. std::put_money (inside money_put::put())

    5. std::quoted(与输出流一起使用时)

如cppreference中的编辑历史所述,该列表是通过获取"width"

的标准草案来编译的。

所有其他操作符都是"粘性的",也就是说,它们执行的流状态更改将持续存在,直到再次显式更改。

在标准c++库中并没有真正的粘/非粘操作符的概念。标准c++库中唯一的非粘性操纵符是width()。其他任何标准格式化标志都不会作为输入或输出的一部分而改变。用户操作符做什么以及使用后是否重置设置完全取决于他们自己。