<streambuf> <iostream>

std::streambuf

typedef basic_streambuf<char> streambuf;
流的基緩衝區類

此模板被設計為所有處理窄字元(char 型別)的流緩衝區類的基虛類。

它是 basic_streambuf 的一個例項化,使用了以下模板引數:
模板引數定義註釋
charTchar別名為成員 char_type
特性 (traits)char_traits<char>別名為成員 traits_type

流緩衝區是一個物件,負責執行與其關聯的物件的讀寫操作:流將其所有此類操作委託給其關聯的流緩衝區物件,該物件是與其受控輸入輸出序列之間的中介。

所有物件,無論是否帶緩衝,都有一個關聯的流緩衝區:某些流緩衝區型別可以設定為使用或不使用中間緩衝區

流緩衝區物件內部至少儲存:
  • 一個 locale 物件,用於依賴於區域設定的操作。
  • 一組用於維護輸入緩衝區的內部指標:ebackgptregptr
  • 一組用於維護輸出緩衝區的內部指標:pbasepptrepptr

在內部,streambuf 類是一個精心設計的基類,旨在為所有派生類提供統一的公共介面:這些公共函式呼叫虛保護成員,派生類可以重寫這些成員以實現特定行為。這些被重寫的虛擬函式可以透過一組保護函式(見下文)訪問 streambuf 類的內部成員。

成員型別

成員型別定義
char_typechar
traits_typechar_traits<char>
int_typeint
pos_typestreampos
off_typestreamoff

公開成員函式

所有流緩衝區的通用功能透過以下公共成員函式提供:

區域設定:
緩衝區管理和定位:
輸入函式 (get):
輸出函式 (put):

受保護成員函式

公共函式並不直接對受控輸入輸出序列執行操作,而是主要依賴於兩個可透過一組內部指標訪問的陣列:

起始
起始指標
當前位置
獲取/放置指標
結尾
結尾指標
輸入序列ebackgptregptr
輸出序列pbasepptrepptr

以下保護成員函式提供對這些指標的訪問:

輸入序列 (get):
輸出序列 (put):
複製:

虛保護成員函式

每個streambuf派生類都應定義成員來維護上述指標相對於其自身型別的受控序列的有效性;修改指標的值,重新分配序列本身,並與關聯字元序列執行所有必要的同步。

透過這種設計,涉及直接讀寫特定關聯字元序列以及管理受控序列的核心功能,是透過虛擬函式提供的,派生類根據需要重寫這些函式:

區域設定:

緩衝區管理和定位:

輸入函式 (get):

輸出函式 (put):