Skip to content

Latest commit

 

History

History
85 lines (61 loc) · 1.99 KB

u8string.md

File metadata and controls

85 lines (61 loc) · 1.99 KB

u8string

  • filesystem[meta header]
  • std::filesystem[meta namespace]
  • path[meta class]
  • function[meta id-type]
  • cpp17[meta cpp]
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");
}
  • p.u8string()[color ff0000]

出力

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");
}
  • p.u8string()[color ff0000]

出力

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

バージョン

言語

  • C++17

処理系

関連項目