std::basic_format_context
來自 cppreference.com
定義於標頭檔案 <format> |
||
template< class OutputIt, class CharT > class basic_format_context; |
(1) | (C++20 起) |
using format_context = basic_format_context</* 未指定 */, char>; |
(2) | (C++20 起) |
using wformat_context = basic_format_context</* 未指定 */, wchar_t>; |
(3) | (C++20 起) |
提供對格式化狀態(由格式化引數和輸出迭代器組成)的訪問。
2) 未指定的模板引數是一個輸出迭代器,它附加到 std::string,例如 std::back_insert_iterator<std::string>。實現通常使用一個迭代器指向型別擦除的緩衝區型別,該緩衝區型別支援附加到任何連續且可調整大小的容器。
3) 未指定的模板引數是一個輸出迭代器,它附加到 std::wstring。
如果 `OutputIt` 不符合 std::output_iterator<const CharT&> 模型,則行為未定義。
宣告 `std::basic_format_context` 的顯式或部分特化程式的行為是格式錯誤的,不需要診斷。
std::basic_format_context
物件只能由實現建立。使用者程式碼只允許透過 std::formatter 特化版本的 `format` 函式來修改格式上下文。
目錄 |
[編輯] 成員型別
型別 | 定義 |
iterator
|
OutputIt
|
char_type
|
CharT
|
[編輯] 成員別名模板
型別 | 定義 |
formatter_type<T> | std::formatter<T, CharT> |
[編輯] 成員函式
(建構函式) [已刪除] |
basic_format_context 不能由使用者程式碼構造(公開成員函式) |
operator= [已刪除] |
basic_format_context 不可賦值(公開成員函式) |
arg |
返回給定索引處的引數 (公開成員函式) |
locale |
返回用於特定於語言環境的格式化的語言環境 (公開成員函式) |
out |
返回到輸出緩衝區的迭代器 (公開成員函式) |
advance_to |
將輸出迭代器推進到給定位置 (公開成員函式) |
std::basic_format_context::arg
std::basic_format_arg<basic_format_context> arg( std::size_t id ) const; |
||
返回一個 `std::basic_format_arg`,其中包含 `args` 中的第 `id` 個引數,`args` 是傳遞給格式化函式的引數包或 `std::basic_format_args` 物件。
如果 `id` 不小於格式化引數的數量,則返回一個預設構造的 `std::basic_format_arg`(持有 std::monostate 物件)。
std::basic_format_context::locale
std::locale locale(); |
||
返回傳遞給格式化函式的語言環境,如果格式化函式不接受語言環境,則返回一個預設構造的 std::locale。
std::basic_format_context::out
iterator out(); |
||
返回指向輸出緩衝區的迭代器。結果是從儲存的迭代器移動構造的。
std::basic_format_context::advance_to
void advance_to( iterator it ); |
||
將 `it` 移動賦值給儲存的輸出迭代器。呼叫 `advance_to` 後,下一次呼叫 `out()` 將返回一個迭代器,其值與賦值前 `it` 的值相同。
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 3567 | C++20 | basic_format_context 不支援僅移動迭代器型別 |
更改為支援移動迭代器 |
LWG 3975 | C++20 | 曾允許使用者特化 basic_format_context |
已停用 |
LWG 4061 | C++20 | basic_format_context 曾可由使用者程式碼構造和賦值 |
更改為既不可構造也不可賦值 |