std::experimental::filesystem::path::string,wstring,u8string,...
ja.cppreference.net から
template< class CharT, class Traits = std::char_traits<CharT>,
class Alloc = std::allocator<CharT> >
std::basic_string<CharT,Traits,Alloc>
string( const Alloc& a = Alloc() ) const;
|
(1) | (filesystem TS) |
std::string string() const;
|
(2) | (filesystem TS) |
std::wstring wstring() const;
|
(filesystem TS) | |
std::string u8string() const;
|
(filesystem TS) | |
std::u16string u16string() const;
|
(filesystem TS) | |
std::u32string u32string() const;
|
(filesystem TS) | |
ネイティブパス名形式の内部パス名を返し、特定の文字列型に変換します。変換(存在する場合)は todo。
1) すべてのメモリ割り当ては
a によって実行されます。2)
u8string() の場合のエンコーディングは常に UTF-8 です。戻り値
ネイティブのパス名形式での内部パス名を、指定された文字列型に変換したもの。
例外
実装定義の例外をスローする可能性があります。
例
このコードを実行
#include <clocale> #include <cstdio> #include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { std::setlocale(LC_ALL, "en_US.utf8"); std::locale::global(std::locale("en_US.utf8")); fs::path p = fs::u8path(u8"要らない.txt"); // ネイティブ文字列表現はOS APIで使用可能 std::ofstream(p) << "File contents"; // これはoperator string()を使用 if (std::FILE* f = std::fopen(p.c_str(), "r")) { int ch; while ((ch=fgetc(f))!= EOF) putchar(ch); std::fclose(f); } // マルチバイトおよびワイド表現は出力に使用可能 std::cout.imbue(std::locale()); std::cout << "\nFile name in narrow multibyte encoding: " << p.string() << '\n'; std::wcerr.imbue(std::locale()); std::wcerr << "File name in wide encoding: " << p.wstring() << '\n'; fs::remove(p); }
出力例:
File contents File name in narrow multibyte encoding: 要らない.txt File name in wide encoding: 要らない.txt
関連項目
|
ジェネリックパス名形式に変換されたパスを文字列として返す
(公開メンバ関数) |