标准是否定义了哪些iomanip操作器是粘性的,哪些不是?
我不断地发现自己指的是:https://stackoverflow.com/a/1533222/2642059
这是一个很好的答案,但他甚至说:
在我的版本
这再加上我在http://en.cppreference.com或http://www.cplusplus.com上找不到粘性的概念,我想知道这是否是一个实现定义的概念。
发布于 2016-11-02 02:51:52
不是“官方”,而是cppreference.com在std::setw里说的
如果调用以下函数之一,流的宽度属性将重置为零(意为“未指定的”):
1. [`operator>>(basic_istream&, basic_string&)`](http://en.cppreference.com/w/cpp/string/basic_string/operator_ltltgtgt)
2. [`operator>>(basic_istream&, char*)`](http://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt2)
1. Overloads 1-7 of [`basic_ostream::operator<<()`](http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt) (at Stage 3 of [`num_put::put()`](http://en.cppreference.com/w/cpp/locale/num_put/put)) (1-7 are the integer, boolean, and pointer overloads)
2. [`operator<<(basic_ostream&, char)`](http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt2) and [`operator<<(basic_ostream&, char*)`](http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt2)
3. [`operator<<(basic_ostream&, basic_string&)`](http://en.cppreference.com/w/cpp/string/basic_string/operator_ltltgtgt)
4. [`std::put_money`](http://en.cppreference.com/w/cpp/io/manip/put_money) (inside [`money_put::put()`](http://en.cppreference.com/w/cpp/locale/money_put/put))
5. [`std::quoted`](http://en.cppreference.com/w/cpp/io/manip/quoted) (when used with an output stream)
此列表作为cppreference 他说中的编辑历史记录,是通过对“宽度”的标准草案进行添加来编译的。
所有其他操纵器都是“粘稠的”,就像它们执行的流状态更改一样,持久化直到再次显式更改。
发布于 2016-10-31 11:59:41
在标准的C++库中,并不存在粘性/非粘性操作器的概念。标准C++库中唯一的非粘性操作程序是width()。其他任何标准格式标志都不会作为输入或输出的一部分进行更改。用户操作符做什么以及使用后是否重置设置完全取决于他们。
https://stackoverflow.com/questions/40341630
复制相似问题