C++ streambuf::pubsetbuf() 函式



C++ 的std::streambuf::pubsetbuf()函式用於設定流緩衝區物件的緩衝區。它允許指定使用者定義的緩衝區及其大小以進行輸入和輸出操作。

此函式通常用於透過提供自定義緩衝區來最佳化 I/O 效能,尤其是在預設緩衝區可能不合適的情況下。

語法

以下是 std::streambuf::pubsetbuf() 函式的語法。

	
pubsetbuf( char_type* s, std::streamsize n )

引數

  • s - 指示此例項化的字元型別指標。
  • n - 指示緩衝區的大小。

返回值

此函式始終返回 this。

異常

如果丟擲異常,則流緩衝區處於有效狀態。

資料競爭

此呼叫和對其他成員函式的後續呼叫都可能訪問和/或修改 s 指向的陣列中的前 n 個字元。

示例 1

在以下示例中,我們將考慮 pubsetbuf() 函式的基本用法。

#include <iostream>
#include <sstream>
int main() {
   std::stringstream a;
   char customBuffer[15];
   a.rdbuf() -> pubsetbuf(customBuffer, sizeof(customBuffer));
   a << "Welcome";
   std::cout << "Result : " << a.str() << std::endl;
   return 0;
}

輸出

以上程式碼的輸出如下:

Result : WelcomeȰ�ͻ ..

示例 2

考慮以下示例,我們將使用 pubsetbuf() 為 std::basic_stringstream 設定緩衝區。

#include <iostream>
#include <sstream>
int main() {
   std::basic_stringstream < char > bss;
   char customBuffer[10];
   bss.rdbuf() -> pubsetbuf(customBuffer, sizeof(customBuffer));
   bss << "Hi";
   std::cout << "Result : " << bss.str() << std::endl;
   return 0;
}

輸出

以下是以上程式碼的輸出:

Result : Hi�P�9e..
streambuf.htm
廣告