名稱空間
變體
操作

std::basic_format_context

來自 cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
定義於標頭檔案 <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 曾可由使用者程式碼構造和賦值 更改為既不可構造也不可賦值