public member function
<streambuf> <iostream>

std::basic_streambuf::pubsync

int pubsync();
同步流缓冲区
调用受保护的虚成员 sync

basic_streambuf 中,成员 sync 不执行任何操作,但派生类应将由 *内部指针* 指向的内容与它们的 *关联序列* 同步(这会有效地将输出缓冲区中的任何未写入字符写入)。

参数



返回值

streambuf 中,sync 的默认定义始终返回零,表示成功。
派生类可以重写此默认行为,并最终返回 -1 来表示失败。

示例

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

int main () {
  std::ofstream ostr ("test.txt");
  if (ostr) {
    std::streambuf * pbuf = ostr.rdbuf();

    pbuf->sputn ("First sentence\n",15);
    pbuf->pubsync();
    pbuf->sputn ("Second sentence\n",16);

    ostr.close();
  }
  return 0;
}

在此示例中,在输入第一个句子后,缓冲区与文件内容同步。

数据竞争

修改*流缓冲区*对象。
同时访问同一*流缓冲区*对象可能会导致数据竞争。

异常安全

基本保证:如果抛出异常,则流缓冲区处于有效状态(这也适用于标准派生类)。

另见