最終更新日時(UTC): 2026年05月29日 03時47分38秒
Akira Takahashi が更新

履歴 編集

function
<filesystem>

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

    std::string generic_system_encoded_string() const;

## 概要

OS依存のパス名エンコーディング (システムのマルチバイト文字コード) で、環境非依存パスフォーマットのパス文字列を取得する。

## 戻り値

環境非依存フォーマットのパス文字列を返す。

文字コード変換が必要な場合、その変換は`<filesystem>`のパス変換規則に従って行われる。

## 備考

- 文字コード変換は損失をともなう可能性があるため、この関数で取得した文字列はレガシーなシステムAPIにパスを渡す用途にのみ適している
- 表示やフォーマットの用途では、`generic_display_string()`、`std::format()`、`std::print()`を使用すること

## 例

    #include <iostream>
    #include <filesystem>

    namespace fs = std::filesystem;

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

      std::string s = p.generic_system_encoded_string();
      std::cout << s << std::endl;
    }

### 出力

    foo/bar

## バージョン

### 言語

- C++26

### 処理系

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

## 関連項目

- `generic_string()` (この関数と同等の動作だが、C++26で非推奨)
- `generic_display_string()` (表示用のリテラルエンコーディングで取得する)
- `system_encoded_string()` (システムフォーマットで取得する)

## 参照

- P2319R5 Prevent path presentation problems
  - 非推奨となった`generic_string()`に代わり、システム依存エンコーディングへの変換であることを明確にしたこの関数がC++26で追加された