public 成员函数
<ostream> <iostream>

std::ostream::put

ostream& put (char c);
放置字符
将字符 c 插入流。

内部,该函数通过首先构造一个 sentry 对象来访问输出序列。然后(如果 good),它将 c 插入到其关联的 *流缓冲区* 对象中,如同调用其成员函数 sputc 一样,最后销毁 sentry 对象,然后返回。

参数

c
要写入的字符。

返回值

ostream 对象 (*this)。

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

如果操作设置了已通过成员 exceptions 注册的 *内部状态标志*,则函数将引发一个类型为 failure 的成员异常。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// typewriter
#include <iostream>     // std::cin, std::cout
#include <fstream>      // std::ofstream

int main () {
  std::ofstream outfile ("test.txt");
  char ch;

  std::cout << "Type some text (type a dot to finish):\n";
  do {
    ch = std::cin.get();
    outfile.put(ch);
  } while (ch!='.');

  return 0;
}

此示例将用户输入直到键入句点(.)的所有内容写入文件。

数据竞争

修改流对象。
同时访问同一流对象可能导致数据竞争,但标准流对象(coutcerrclog)在与 stdio *同步* 时除外(在这种情况下,不会引发数据竞争,尽管未保证来自多个线程的字符插入顺序)。

异常安全

基本保证:如果抛出异常,对象处于有效状态。
如果最终的 *错误状态标志* 不是 goodbit 并且成员 exceptions 被设置为针对该状态进行抛出,则会引发类型为 failure 的成员异常。
由内部操作引发的任何异常都会被函数捕获并处理,设置 badbit。如果上次调用 exceptions 时设置了 badbit,则函数将重新抛出捕获到的异常。

另见