std::string u8string() const; // (1) C++17
std::u8string u8string() const; // (1) C++20
概要
UTF-8エンコードで、パス文字列を取得する。
戻り値
*this
が保持するシステムのネイティブフォーマットを持つパスを、UTF-8エンコードで返す。
備考
- C++20から、破壊的変更として戻り値の型が
std::string
からstd::u8string
に変更となっている。これは、UTF-8エンコードされた文字型としてchar8_t
が追加され、char
型と型レベルで区別できるようにしたためである
例
POSIXベースシステムでの例
#include <cassert>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::path p = "/usr/bin/clang";
auto s = p.u8string();
// システムのマルチバイト文字コードからUTF-8に変換されたパス文字列が返される
assert(s == u8"/usr/bin/clang");
}
出力
Windowsでの例
#include <cassert>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::path p = "foo/bar";
auto s = p.u8string();
// システムのマルチバイト文字コードからUTF-8に変換されたパス文字列が返される
assert(s == u8"foo/bar");
}
出力
バージョン
言語
- C++17
処理系
- Clang:
- GCC: 8.1 ✅
- Visual C++: 2017 Update 7 ✅