C++ streambuf::setbuf() 函数



C++ 的std::streambuf::setbuf()函数用于设置流缓冲区对象的缓冲区。此函数允许自定义用于输入和输出操作的缓冲区。它接受两个参数;指向用作缓冲区的字符数组的指针及其大小。

语法

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

streambuf* setbuf (char* s, streamsize n);

参数

  • s, n − 它表示派生类中重写函数可能使用的参数。

返回值

此函数返回 this。

异常

如果抛出异常,对象处于有效状态。

数据竞争

如果 s 和 n 两个参数都为零,则不会引入数据竞争。否则,未指定。

示例 1

让我们看下面的例子,我们将为 std::cin 流设置 12 字节的自定义缓冲区。

#include <iostream>
#include <streambuf>
#include <string>
int main() {
   char x[12];
   std::streambuf * y = std::cin.rdbuf();
   y -> pubsetbuf(x, sizeof(x));
   std::string input = "Welcome.";
   std::cout << "Input : " << input << std::endl;
   std::cout << "Buffer size: " << sizeof(x) << " bytes" << std::endl;
   return 0;
}

输出

以上代码的输出如下:

Input : Welcome.
Buffer size: 12 bytes

示例 2

考虑下面的例子,我们将缓冲区设置为 null。

#include <iostream>
#include <streambuf>
int main() {
   std::streambuf * x = std::cout.rdbuf();
   x -> pubsetbuf(NULL, 0);
   std::cout << "Buffer disabled." << std::endl;
   return 0;
}

输出

以下是以上代码的输出:

Buffer disabled.
streambuf.htm
广告
© . All rights reserved.