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

履歴 編集

function
<filesystem>

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

    std::string system_encoded_string() const;

## 概要

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

## 戻り値

`native()`を返す。

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

## 備考

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

## 例

    #include <iostream>
    #include <filesystem>
    #include <string>

    namespace fs = std::filesystem;

    int main()
    {
      fs::path p = "/usr/bin/clang";

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

### 出力

    /usr/bin/clang

## バージョン

### 言語

- C++26

### 処理系

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

## 関連項目

- `native()` (システムの文字コードでパス文字列を取得する)
- `string()` (この関数と同等の動作だが、C++26で非推奨)
- `display_string()` (表示用のリテラルエンコーディングで取得する)
- `generic_system_encoded_string()` (環境非依存フォーマットで取得する)

## 参照

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