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

履歴 編集

function
<filesystem>

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

std::string generic_u8string() const;   // (1) C++17
std::u8string generic_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.generic_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.generic_u8string();

  // システムのマルチバイト文字コードからUTF-8に変換されたパス文字列が返される
  assert(s == u8"foo/bar");
}

出力

バージョン

言語

  • C++17

処理系

関連項目