命名空间
变体
操作

C++ 命名要求: UnformattedOutputFunction

来自 cppreference.cn
< cpp‎ | named req
 
 
C++ 命名要求
基本
类型属性
库范围




容器 (Container)
容器元素
迭代器 (Iterator)
流 I/O
非格式化输出函数 (UnformattedOutputFunction)
格式化器
随机数
并发
范围 (Ranges)
多维视图 (Multidimensional View)
其他

 

[编辑] 要求

UnformattedOutputFunction 是一种流输出函数,它执行以下操作

1) 构造一个具有自动存储持续时间的 basic_ostream::sentry 类型的对象,该对象执行以下操作
  • 如果在输出流上设置了 eofbitbadbit,则也设置 failbit,并且如果在此输出流的异常掩码中启用了 failbit 上的异常 ((exceptions() & failbit) != 0),则抛出 ios_base::failure
  • 如果适用,刷新 tie()'d 输出流。
2) 通过调用 sentry::operator bool() 检查 sentry 的状态,这等效于 basic_ios::good
  • 如果运算符返回 false 或 sentry 的构造函数抛出异常,则不进行任何输出。
  • 如果运算符返回 true,则尝试通过将字符插入输出流来执行所需的输出,就像调用 rdbuf()->sputc() 一样。 也可以使用 std::basic_ostream 的其他公共成员,但 rdbuf() 的虚成员(除了 overflow()xsputn()sync() 之外)永远不会被调用。
  • 如果在输出期间抛出异常,则在输出流中设置 badbit。 如果在此流的异常掩码中启用了 badbit 上的异常 ((exceptions() & badbit) != 0),则异常也会被重新抛出。
  • 如果没有抛出异常,则返回函数指定的值。
3) 在任何情况下,无论是通过异常终止还是返回,在离开此函数之前都会调用 sentry 的析构函数。

[编辑] 标准库

以下标准库函数是 UnformattedOutputFunctions

(since C++11)

[编辑] 缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

DR 应用于 已发布行为 正确行为
LWG 63 C++98 异常处理策略缺失 已添加
LWG 160 C++98 确定捕获的异常的过程
被重新抛出时提到了一个不存在的函数 exception()
已更正为 exceptions()
LWG 165 C++98 唯一允许的虚成员是
在 rdbuf() 上调用的是 overflow()
也允许
xsputn()sync()