| Member types | ||||||||||||||||||||||||||
| Member constants | ||||||||||||||||||||||||||
| Member functions | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| Path decomposition | ||||||||||||||||||||||||||
| Non-member functions | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| Helper classes | ||||||||||||||||||||||||||
template<class CharT,class Traits=std::char_traits<CharT>, class Alloc=std::allocator<CharT>> | (1) | (since C++17) |
| (2) | (since C++17) | |
std::string string()const; | ||
std::wstring wstring()const; | ||
std::u16string u16string()const; | ||
std::u32string u32string()const; | ||
| (3) | ||
std::string u8string()const; | (since C++17) (until C++20) | |
std::u8string u8string()const; | (since C++20) | |
Returns the internal pathname in native pathname format, converted to specific string type. Conversion, if any, is performed as follows:
path::value_type ischar, conversion, if any, is system-dependent. This is the case on typical POSIX systems (such as Linux), where native encoding is UTF-8 andstring() performs no conversion.path::value_type iswchar_t, conversion, if any, is unspecified. This is the case on Windows, wherewchar_t is 16 bit and the native encoding is UTF-16.path::value_type ischar16_t, native encoding is UTF-16 and the conversion method is unspecified.path::value_type ischar32_t, native encoding is UTF-32 and the conversion method is unspecified.path::value_type ischar8_t, native encoding is UTF-8 and the conversion method is unspecified.Contents |
(none)
The internal pathname in native pathname format, converted to specified string type.
May throw implementation-defined exceptions.
#include <clocale>#include <cstdio>#include <filesystem>#include <fstream>#include <iostream>#include <locale> int main(){constchar*const localeName="ja_JP.utf-8";std::setlocale(LC_ALL, localeName);std::locale::global(std::locale(localeName)); conststd::filesystem::path p(u8"要らない.txt");std::ofstream(p)<<"File contents"; // native string representation can be used with OS APIsif(std::FILE*const f=std::fopen(p.string().c_str(),"r")){for(int ch;(ch=std::fgetc(f))!=EOF;)std::putchar(ch); std::fclose(f);} // multibyte and wide representation can be used for outputstd::cout<<"\nFile name in narrow multibyte encoding: "<< p.string()<<'\n'; // wstring() will throw in stdlibc++ (as per gcc-12.1.0), see:// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95048// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102839// works with more recent gcc-12.2.1 (2023/02/01) and clang-10+std::wcout<<"File name in wide encoding: "<< p.wstring()<<'\n'; std::filesystem::remove(p);}
Possible output:
File contentsFile name in narrow multibyte encoding: 要らない.txtFile name in wide encoding: 要らない.txt
| returns the path in generic pathname format converted to a string (public member function)[edit] |