std::basic_syncbuf
來自 cppreference.com
| 定義於標頭檔案 <syncstream> |
||
| template< class CharT, |
(C++20 起) | |
std::basic_syncbuf 是一個 std::basic_streambuf 的包裝器(在構造時以指標形式提供)。它在自己的內部緩衝區中累積輸出,並在銷燬時以及明確請求時原子地將其全部內容傳輸到被包裝的緩衝區,使得它們顯示為連續的字元序列。它保證沒有資料競爭,也沒有傳送到被包裝緩衝區的字元交錯,只要對同一緩衝區的其他所有輸出都透過(可能是不同的)std::basic_syncbuf 例項進行。
std::basic_syncbuf 的典型實現包含一個指向被包裝的 std::basic_streambuf 的指標,一個布林標誌指示緩衝區是否會在同步(flush)時將其內容傳輸到被包裝的緩衝區,一個布林標誌指示當策略不是在同步時發出(emit)時存在掛起的 flush,一個使用 Allocator(例如 std::string)的內部緩衝區,以及一個指向用於在多個訪問同一被包裝流緩衝區的執行緒之間同步發出操作的互斥鎖的指標(這些互斥鎖可能在一個雜湊對映中,以指向 std::basic_streambuf 物件的指標作為鍵)。
像其他 streambuf 類一樣,std::basic_syncbuf 通常只通過相應的流 std::osyncstream 訪問,而不是直接訪問。
提供了用於常見字元型別的幾個 typedef
| 定義於標頭檔案
<syncstream> | |
| 型別 | 定義 |
std::syncbuf
|
std::basic_syncbuf<char> |
std::wsyncbuf
|
std::basic_syncbuf<wchar_t> |
目錄 |
[編輯] 成員型別
| 成員型別 | 定義 |
char_type
|
CharT |
traits_type
|
Traits;如果 Traits::char_type 不是 CharT,則程式格式錯誤。 |
int_type
|
Traits::int_type |
pos_type
|
Traits::pos_type |
off_type
|
Traits::off_type |
allocator_type
|
Allocator
|
streambuf_type
|
std::basic_streambuf<CharT, Traits> |
[編輯] 成員函式
公開成員函式 | |
構造 basic_syncbuf 物件(public 成員函式) | |
賦值 basic_syncbuf 物件(public 成員函式) | |
交換兩個 basic_syncbuf 物件(public 成員函式) | |
銷燬 basic_syncbuf 併發出其內部緩衝區(public 成員函式) | |
| 原子地將整個內部緩衝區傳輸到被包裝的 streambuf (public 成員函式) | |
| 檢索被包裝的 streambuf 指標 (public 成員函式) | |
檢索此 basic_syncbuf 使用的分配器(public 成員函式) | |
| 更改當前同步時發出策略 (public 成員函式) | |
受保護的成員函式 | |
| 根據當前同步時發出策略,要麼發出,要麼記錄掛起的 flush (public 成員函式) | |
[編輯] 非成員函式
| 特化 std::swap 演算法 (函式模板) |
繼承自 std::basic_streambuf
成員型別
| 成員型別 | 定義 |
char_type
|
CharT |
traits_type
|
Traits;如果 Traits::char_type 不是 CharT,則程式格式錯誤。 |
int_type
|
Traits::int_type |
pos_type
|
Traits::pos_type |
off_type
|
Traits::off_type |
成員函式
| [virtual] |
銷燬 basic_streambuf 物件( std::basic_streambuf<CharT,Traits> 的虛公有成員函式) |
區域設定 | |
| 更改關聯的區域設定並呼叫 imbue() ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
| 獲取關聯區域設定的副本 ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
定位 | |
| 呼叫 setbuf() ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
| 呼叫 seekoff() ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
| 呼叫 seekpos() ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
| 呼叫 sync() ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
獲取區 | |
| 獲取獲取區中立即可用的字元數 ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
| 推進輸入序列,然後讀取一個字元而不再次推進 ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
| (C++17 中移除) |
從輸入序列中讀取一個字元並推進序列 ( std::basic_streambuf<CharT,Traits> 的公有成員函式) |
| 從輸入序列中讀取一個字元而不推進序列 ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
| 呼叫 xsgetn() ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
放置區 | |
| 將一個字元寫入放置區並推進下一個指標 ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
| 呼叫 xsputn() ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
回放 | |
| 將一個字元放回輸入序列 ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
| 將輸入序列中的下一個指標後退一個位置 ( std::basic_streambuf<CharT,Traits> 的公有成員函式) | |
受保護的成員函式
構造 basic_streambuf 物件(protected 成員函式) | |
| (C++11) |
替換 basic_streambuf 物件(protected 成員函式) |
| (C++11) |
交換兩個 basic_streambuf 物件(protected 成員函式) |
區域設定 | |
| [virtual] |
響應關聯區域設定的更改 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
定位 | |
| [virtual] |
如果允許,用使用者定義的陣列替換緩衝區 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
| [virtual] |
使用相對定址重新定位輸入序列、輸出序列或兩者的下一個指標 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
| [virtual] |
使用絕對定址重新定位輸入序列、輸出序列或兩者的下一個指標 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
| [virtual] |
將緩衝區與關聯的字元序列同步 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
獲取區 | |
| [virtual] |
如果已知,獲取關聯輸入序列中可用於輸入的字元數 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
| [virtual] |
從關聯輸入序列中讀取字元到獲取區 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
| [virtual] |
從關聯輸入序列中讀取字元到獲取區並推進下一個指標 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
| [virtual] |
從輸入序列中讀取多個字元 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
| 返回獲取區起始、當前字元和結尾的指標 (protected 成員函式) | |
| 推進輸入序列中的下一個指標 (protected 成員函式) | |
| 重新定位輸入序列的起始、下一個和結束指標 (protected 成員函式) | |
放置區 | |
| [virtual] |
向輸出序列寫入多個字元 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
| [virtual] |
從放置區向關聯輸出序列寫入字元 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
| 返回放置區起始、當前字元和結尾的指標 (protected 成員函式) | |
| 推進輸出序列的下一個指標 (protected 成員函式) | |
| 重新定位輸出序列的起始、下一個和結束指標 (protected 成員函式) | |
回放 | |
| [virtual] |
將一個字元放回輸入序列,可能會修改輸入序列 ( std::basic_streambuf<CharT,Traits> 的虛保護成員函式) |
[編輯] 注意
| 特性測試宏 | 值 | 標準 | 特性 |
|---|---|---|---|
__cpp_lib_syncbuf |
201803L |
(C++20) | 同步緩衝輸出流(std::syncbuf,std::osyncstream)和操縱符 |