C++ 具名要求:有格式输出函数 (FormattedOutputFunction)

< cpp‎ | named req
 
 
 

要求

有格式输出函数 (FormattedOutputFunction) 是进行下列操作的流输出函数:

  • 若输出流上设置了 eofbitbadbit,则一并设置 failbit,而若此输出流的异常掩码中启用了 failbit 上的异常,则抛出 ios_base::failure
  • 冲洗其所 tie() 的输出流,若适用。
  • 通过调用 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)