C++ streambuf::pubsync() 函数



C++ 的std::streambuf::pubsync()函数用于将缓冲区与相关的输入/输出序列同步。通常,此函数调用受保护的虚函数sync(),该函数处理实际的同步。

如果sync()成功,则返回0,否则返回-1。

语法

以下是std::streambuf::pubsync()函数的语法。

int pubsync();

参数

它不接受任何参数。

返回值

它返回streambuf中sync的默认定义,始终返回零,表示成功。

异常

如果抛出异常,则流缓冲区处于有效状态。

数据竞争

它修改流缓冲区对象。

示例1

在下面的示例中,我们将考虑pubsync()函数的基本用法。

#include <iostream>
#include <streambuf>
#include <sstream>
int main() {
   std::stringstream a;
   a << "Hello";
   std::streambuf * b = a.rdbuf();
   int result = b -> pubsync();
   std::cout << "Result : " << result << std::endl;
   return 0;
}

输出

以上代码的输出如下:

Result : 0

示例2

考虑下面的示例,我们将执行多次插入后的同步。

#include <iostream>
#include <sstream>
int main() {
   std::ostringstream x;
   x << "A ";
   x << "B ";
   x << "C ";
   int result = x.rdbuf() -> pubsync();
   std::cout << "Result: " << result << std::endl;
   std::cout << "Buffer content: " << x.str() << std::endl;
   return 0;
}

输出

以上代码的输出如下:

Result: 0
Buffer content: A B C

示例3

让我们看一下下面的示例,我们将检查std::cin上的pubsync()。

#include <iostream>
int main() {
   std::streambuf * pbuf = std::cin.rdbuf();
   int a = pbuf -> pubsync();
   std::cout << "Result : " << a << std::endl;
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

Result : 0
streambuf.htm
广告