public member function
<streambuf> <iostream>

std::streambuf::pubsetbuf

streambuf* pubsetbuf (char* s, streamsize n);
設定緩衝區陣列
呼叫受保護的虛擬成員 setbuf,並傳遞相同的引數 sn

streambuf 中,成員 setbuf 不執行任何操作,但派生類可以重寫它,以便以每種派生類特有的方式影響物件:filebufstringbuf 都重寫了這個虛擬成員函式,以將 s 指向的 n 個字元的陣列設定為“流緩衝區”物件使用的內部字元序列(請參閱 filebuf::setbufstringbuf::setbuf)。

引數

s, n
派生類中重寫函式可能會使用到的引數。
streamsize 是一個帶符號整型。

返回值

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 個字元。
修改*流緩衝區*物件。
對同一陣列或同一流緩衝區物件的併發訪問可能會引入資料爭用。

異常安全

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

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

另見