| 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 generic_string()const; | ||
std::wstring generic_wstring()const; | ||
std::u16string generic_u16string()const; | ||
std::u32string generic_u32string()const; | ||
| (3) | ||
std::string generic_u8string()const; | (since C++17) (until C++20) | |
std::u8string generic_u8string()const; | (since C++20) | |
Returns the internal pathname in generic pathname format, converted to specific string type. Conversion, if any, is specified 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.The/ character is used as the directory separator.
u8string() is always UTF-8.Contents |
| a | - | allocator to construct the string with |
| Type requirements | ||
-CharT must be one of the encoded character types (char,wchar_t,char8_t(since C++20),char16_t andchar32_t). | ||
The internal pathname in generic pathname format, converted to specified string type.
May throw implementation-defined exceptions.
#include <cstddef>#include <filesystem>#include <iomanip>#include <iostream>#include <span>#include <string_view> void print(std::string_view rem,autoconst& str){std::cout<< rem<<std::hex<<std::uppercase<<std::setfill('0');for(constauto b:std::as_bytes(std::span{str}))std::cout<<std::setw(2)<<std::to_integer<unsigned>(b)<<' ';std::cout<<'\n';} int main(){std::filesystem::path p{"/家/屋"};std::cout<< p<<'\n'; print("string : ", p.generic_string()); print("u8string : ", p.generic_u8string()); print("u16string : ", p.generic_u16string()); print("u32string : ", p.generic_u32string()); print("wstring : ", p.generic_wstring());}
Possible output:
"/家/屋"string : 2F E5 AE B6 2F E5 B1 8Bu8string : 2F E5 AE B6 2F E5 B1 8Bu16string : 2F 00 B6 5B 2F 00 4B 5Cu32string : 2F 00 00 00 B6 5B 00 00 2F 00 00 00 4B 5C 00 00wstring : 2F 00 00 00 B6 5B 00 00 2F 00 00 00 4B 5C 00 00
| returns the path in native pathname format converted to a string (public member function)[edit] |