std::string system_encoded_string() const;
概要
OS依存のパス名エンコーディング (システムのマルチバイト文字コード) で、パス文字列を取得する。
戻り値
native()を返す。
文字コード変換が必要な場合、その変換は<filesystem>のパス変換規則に従って行われる。
備考
- 文字コード変換は損失をともなう可能性があるため、この関数で取得した文字列はレガシーなシステムAPIにパスを渡す用途にのみ適している
- 表示やフォーマットの用途では、
display_string()、std::format()、std::print()を使用すること
例
#include <iostream>
#include <filesystem>
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で追加された
- 非推奨となった