類模板
<streambuf> <iostream>

std::basic_streambuf

template <class charT, class traits = char_traits<charT> >  class basic_streambuf;
面向流的基緩衝類

此模板被設計為所有流緩衝類的基虛擬類。

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

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

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

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

模板引數

charT
字元型別。
這應是一個非陣列的 POD 型別
別名為成員型別basic_streambuf::char_type
特性 (traits)
字元特性類,它定義了流物件使用的字元的基本屬性(參見char_traits)。
traits::char_type 應當與 charT 相同。
別名為成員型別basic_streambuf::traits_type

sub_match for string literals (class)

這些例項化在<streambuf>中宣告,而<iostream>透過引用包含了它。

成員型別

成員型別定義說明
char_type第一個模板引數(charT
traits_type第二個模板引數(traits預設為:char_traits<charT>
int_typetraits_type::int_type
pos_typetraits_type::pos_type通常與 streampos 相同
off_typetraits_type::off_type通常與 streamoff 相同

公開成員函式

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

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

受保護成員函式

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

beginning
(起始指標)
current position
(get/put指標)
end
(結束指標)
Input sequenceebackgptregptr
Output sequencepbasepptrepptr

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

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

虛保護成員函式

每個streambuf-派生類應定義成員,以使其指標對於其自身的受控序列型別保持有效;修改指標值、重新分配序列本身,並執行所有必要的與關聯字元序列的同步。

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

區域設定:

緩衝區管理和定位:

輸入函式 (get):

輸出函式 (put):