C++ 概念: FormattedOutputFunction
来自cppreference.com
[编辑] 要求
有格式输出函数 (FormattedOutputFunction
) 是进行下列操作的流输出函数:
- 构造拥有自动存储期的 basic_ostream::sentry类型对象,这进行下列操作
- 若输出流上设置了 eofbit 或 badbit ,则一并设置
failbit
,而若此输出流的异常掩码中启用了 failbit 上的异常,则抛出 ios_base::failure 。 - 冲入 tie() 过的输出流,若可应用。
- 若输出流上设置了 eofbit 或 badbit ,则一并设置
- 以调用
sentry::operator bool()
检查 sentry 的状态,等价于 basic_ios::good 。 - 若 sentry 返回 false 或 sentry 的构造函数抛异常,则不发生输出
- 若 sentry 返回 true ,则试图通过插入字符到输出流进行所欲的输出,如同以调用 rdbuf()->sputc() 或 rdbuf()->xsputn() 。另外,可能调用 rdbuf()->overflow() 或 rdbuf()->sync() ,但不会调用 std::basic_streambuf 的其他虚成员函数。
- 若无法生成输出,则设置
failbit
。若此流的异常掩码中启用了 failbit 上的异常,则抛出 ios_base::failure 。 - 若输出中抛出异常,则设置输出流中的
badbit
。若此流的异常掩码中启用了 badbit 上的异常,则亦会重抛该异常。 - 若未抛异常,则返回 *this 。
- 若无法生成输出,则设置
- 任何事件中,无论是因异常终止还是返回,都会在离开此函数前调用 sentry 的析构函数。
[编辑] 标准库
下列标准库函数是有格式输出函数 (FormattedOutputFunction
) 。