最終更新日時(UTC):
が更新

履歴 編集

function
<filesystem>

std::filesystem::path::u8string(C++17)

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");
}

出力

Windowsでの例は、Visual C++が正式にファイルシステムライブラリをサポートしていないことから、未検証のサンプルコード・出力となっている。

バージョン

言語

  • C++17

処理系

関連項目