public member function
<streambuf> <iostream>

std::basic_streambuf::pubsetbuf

basic_streambuf* pubsetbuf (char_type* s, streamsize n);
設定緩衝區陣列
呼叫受保護的虛成員函式 setbuf,引數為 sn

basic_streambuf 中,成員 setbuf 不執行任何操作,但派生類可以重寫它以以特定於每個派生類的方式影響物件:basic_filebufbasic_stringbuf 都重寫了此虛成員函式,以將 s 指向的 n 個字元的陣列設定為*流緩衝區*物件使用的*內部字元序列*(請參閱 basic_filebuf::setbufbasic_stringbuf::setbuf)。

引數

s, n
派生類中重寫函式可能會使用到的引數。
成員型別 char_type流緩衝區(第一個類模板引數)中字元的型別。
streamsize 是一個帶符號整型。

返回值

basic_streambuf 中,它總是返回 this

示例

1
2
3
4
5
6
7
8
9
10
11
12
// set character buffer (pubsetbuf)
#include <fstream>      // std::fstream

int main () {
  char mybuffer [512];
  std::fstream filestr;
  filestr.rdbuf()->pubsetbuf(mybuffer,512);

  // operations with file stream here.

  return 0;
}

此示例中的程式碼為 filestr 的*流緩衝區*物件設定了一個新的 512 個字元的緩衝區。

資料競爭

此呼叫和其他對成員函式的呼叫都可以訪問和/或修改 s 指向的陣列中的前 n 個字元。
修改*流緩衝區*物件。
對同一陣列或同一流緩衝區物件的併發訪問可能會引入資料爭用。

異常安全

基本保證:如果丟擲異常,則流緩衝區處於有效狀態(這也適用於標準派生類)。

無效引數會導致未定義行為

另見