- filesystem[meta header]
- std::filesystem[meta namespace]
- path[meta class]
- function[meta id-type]
- cpp26[meta cpp]
std::string generic_native_encoded_string() const;ネイティブエンコーディング (native ordinary encoding、そのシステムで通常使用されるマルチバイト文字コード) で、環境非依存パスフォーマットのパス文字列を取得する。
環境非依存フォーマットのパス文字列を返す。
文字コード変換が必要な場合、その変換は<filesystem>のパス変換規則に従って行われる。
- 文字コード変換は損失をともなう可能性があるため、この関数で取得した文字列はレガシーなシステムAPIにパスを渡す用途にのみ適している
- 表示やフォーマットの用途では、
generic_display_string()、std::format()、std::print()を使用すること
#include <iostream>
#include <filesystem>
#include <string>
namespace fs = std::filesystem;
int main()
{
fs::path p = "foo\\bar"; // ネイティブフォーマットのパス (ディレクトリ区切り文字がバックスラッシュ)
std::string s = p.generic_native_encoded_string();
std::cout << s << std::endl;
}- p.generic_native_encoded_string()[color ff0000]
foo/bar
- C++26
- Clang: 22 [mark noimpl]
- GCC: 16.1 [mark noimpl]
- Visual C++: 2026 Update 2 [mark noimpl]
generic_string()(この関数と同等の動作だが、C++26で非推奨)generic_display_string()(表示用のリテラルエンコーディングで取得する)native_encoded_string()(システムフォーマットで取得する)
- P2319R5 Prevent path presentation problems
- 非推奨となった
generic_string()に代わり、ネイティブエンコーディングへの変換であることを明確にしたこの関数がC++26で追加された
- 非推奨となった
- LWG Issue 4512. The
system_encoded_string()andgeneric_system_encoded_string()member functions ofstd::filesystem::pathare misnamed- この関数はP2319R5で
generic_system_encoded_string()という名前で追加されたが、「システムエンコーディング」という語がまぎらわしく、実際にはネイティブエンコーディング (native ordinary encoding) への変換であるため、C++26のリリース前にgeneric_native_encoded_string()へ改名された
- この関数はP2319R5で