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で追加された
- 非推奨となった