最終更新日時: 2026年07月22日 16時08分23秒 (JST)
rotarymars が更新

履歴 編集

function
<filesystem>

# std::filesystem::path::generic_display_string(C++26)

    std::string generic_display_string() const;

## 概要

表示に適したリテラルエンコーディングで、環境非依存パスフォーマットのパス文字列を取得する。

`std::format()`や`std::print()`で出力するのに適した文字列を返す。

## 戻り値

以下と等価である：

    return std::format("{:g}", *this);

## 備考

- 戻り値の文字列は、フォーマット (`std::format()`) や出力 (`std::print()`) で使用するのに適している
- リテラルエンコーディングがUTF-8であり、パスが妥当なUnicodeであれば (Windowsのほとんどのパスがそうである)、文字コード変換は無損失となる

## 例

    #include <print>
    #include <filesystem>
    #include <string>

    namespace fs = std::filesystem;

    int main()
    {
      fs::path p = "foo\\bar"; // ネイティブフォーマットのパス (ディレクトリ区切り文字がバックスラッシュ)

      std::string s = p.generic_display_string();
      std::print("{}\n", s);
    }

### 出力

    foo/bar

## バージョン

### 言語

- C++26

### 処理系

- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌

## 関連項目

- `generic_string()` (システムのマルチバイト文字コードで取得する。C++26で非推奨)
- `generic_system_encoded_string()` (システム依存エンコーディングで取得する)
- `display_string()` (システムフォーマットで取得する)
- `formatter` (`std::format()`での書式)

## 参照

- P2319R5 Prevent path presentation problems
  - 表示用のリテラルエンコーディングで環境非依存フォーマットの文字列を取得するこの関数がC++26で追加された