Namespaces
Variants

std:: formatter <std::filesystem::path>

From cppreference.net
定義済みヘッダー <filesystem>
template < class CharT >
struct formatter < std:: filesystem :: path , CharT > ;
(C++26以降)

std::formatter のテンプレート特殊化は、 std::filesystem::path クラスに対して、パス名をテキスト表現に変換することを可能にします。これは フォーマット機能 を使用して行われます。この特殊化は デバッグ有効 です。

目次

フォーマット仕様

書式指定の構文 path-format-spec は以下の通りです:

fill-and-align  (オプション) width  (オプション) ? (オプション) g (オプション)

fill-and-align および width は、 標準フォーマット仕様 と同じ意味を持ちます。

? オプションは、パス名を エスケープ文字列 としてフォーマットするために使用されます。

g オプションは、パス名が 汎用形式表現 であることを指定するために使用されます。

メンバー関数

set_debug_format
パス名を エスケープ文字列 としてフォーマットすることを有効にする
(公開メンバ関数)
parse
path-format-spec で指定されたフォーマット指定子を解析する
(公開メンバ関数)
format
path-format-spec で指定されたフォーマットされた出力を書き込む
(公開メンバ関数)

std::formatter<std::filesystem::path>:: set_debug_format

constexpr void set_debug_format ( ) ;

現在のオブジェクトがパス名を エスケープ文字列 としてフォーマットすることを許可します。

std::formatter<std::filesystem::path>:: parse

constexpr auto parse ( std:: basic_format_parse_context < CharT > & ctx )
- > std:: basic_format_parse_context < CharT > :: iterator ;

書式指定子を path-format-spec として解析し、解析された指定子を現在のオブジェクトに格納します。

path-format-spec の終端を過ぎたイテレータを返します。

std::formatter<std::filesystem::path>:: format

template < class FormatContext >

auto format ( const std:: filesystem :: path & p, FormatContext & ctx ) const

- > FormatContext :: iterator ;

g オプションが使用されている場合、 s p. generic < std :: filesystem :: path :: value_type > ( ) とし、それ以外の場合は p. native ( ) とする。 s path-format-spec で指定された通りに ctx. out ( ) に書き込む。

パス名の文字変換について:

  • 以下の条件がすべて満たされる場合、パス名はワイド文字列のネイティブエンコーディングからUTF-8に変換され、不正なサブシーケンスの最大部分は U+FFFD REPLACEMENT CHARACTERで置換される:
  • それ以外の場合、 std:: is_same_v < typename path :: value_type , CharT > true の場合、変換は行われない。
  • それ以外の場合、変換は実装定義である。

出力範囲の終端を過ぎたイテレータを返す。

注記

機能テスト マクロ 標準 機能
__cpp_lib_format_path 202403L (C++26) std::filesystem::path の フォーマットサポート

関連項目

(C++20)
指定された型のフォーマット規則を定義する
(クラステンプレート)