函数
<ostream> <iostream>

std::ends

用于 ostream
ostream& ends (ostream& os);
基础模板
template <class charT, class traits>basic_ostream<charT,traits>& ends (basic_ostream<charT,traits>& os);
插入空字符
os 上插入一个空字符

其行为等同于调用 os.put('\0')(对于其他字符类型,则等同于调用 os.put(charT()))。

参数

os
插入字符的输出流对象。
由于此函数是操纵符,因此它设计为独立使用,不带参数,并与输出流的插入 (<<) 操作结合使用。

返回值

参数 os

通过修改 os内部状态标志来发出错误信号。
标志错误
eofbit-
failbit如果 sentry 对象的构造失败,则可能设置此标志。
badbit流上的插入失败,或者发生了其他错误(例如,当此函数捕获了内部操作抛出的异常时)。
当设置此标志时,流的完整性可能受到影响。
单个操作可能在 os 上设置多个标志。

如果操作设置了 os内部状态标志,并且该标志已使用其成员 exceptions 注册,则该函数将抛出类型为 ios_base::failure 的异常。

数据竞争

修改 os
对同一流对象的并发访问可能导致数据争用,标准流对象(coutcerrclogwcoutwcerrwclog)在与 stdio 同步时除外(在这种情况下,不会引发数据争用,但对于从多个线程插入字符的顺序不作保证)。

异常安全

基本保证:如果抛出异常,os 处于有效状态。
如果 os错误状态标志不是 goodbitexceptions 成员已设置为针对该状态抛出,则抛出类型为 failure 的成员类型异常。
内部操作抛出的任何异常都会被函数捕获并处理,设置 osbadbit。如果 exceptions 的最后一次调用为 os 设置了 badbit,则该函数会重新抛出捕获的异常。

另见