标准是否定义哪些iomanip
操纵器是粘性的,哪些不是?
我一直在发现自己指的是:https://stackoverflow.com/a/1533222/2642059
哪个是一个很好的答案,但甚至说:
在我的版本
上
再加上我无法在http://en.cppreference.com或http://www.cplusplus.com找到粘性概念这一事实让我想知道这是否是一个实现定义的概念。
答案 0 :(得分:2)
标准C ++库中没有粘性/非粘性操纵器的概念。标准C ++库中唯一的非粘性操纵器是width()
。其他标准格式化标志都不会作为输入或输出的一部分进行更改。用户操作员做了什么以及他们在使用后是否重置设置完全取决于他们。
答案 1 :(得分:2)
不是"官方",但cppreference.com在std::setw
中说如果调用以下任何函数,则stream的width属性将重置为零(表示"未指定"):
输入
输出
超载
basic_ostream::operator<<()
的1-7(在num_put::put()
的第3阶段)(1-7是整数,布尔值和指针重载)
operator<<(basic_ostream&, char)
和operator<<(basic_ostream&, char*)
std::quoted
(与输出流一起使用时)
作为cppreference says中的编辑历史记录,此列表是通过为&#34; width&#34;
的标准草稿进行编辑而编译的。所有其他操纵者都是&#34;粘性&#34;,就像在他们执行的流状态更改一样,直到再次显式更改为止。