std::filesystem::path::generic_string, std::filesystem::path::generic_wstring, std::filesystem::path::generic_u8string, std::filesystem::path::generic_u16string, std::filesystem::path::generic_u32string
template< class CharT, class Traits = std::char_traits<CharT>,
class Alloc = std::allocator<CharT> >
std::basic_string<CharT,Traits,Alloc>
generic_string( const Alloc& a = Alloc() ) const;
| (1) | (начиная с C++17) |
std::string generic_string() const; | (2) | (начиная с C++17) |
std::wstring generic_wstring() const; | (3) | (начиная с C++17) |
std::u16string generic_u16string() const; | (4) | (начиная с C++17) |
std::u32string generic_u32string() const; | (5) | (начиная с C++17) |
std::string generic_u8string() const; | (6) |
(начиная с C++17) (до C++20) |
std::u8string generic_u8string() const; | (начиная с C++20) |
Возвращает внутреннее имя пути в универсальном формате имени пути, преобразованное в указанный тип строки. Преобразование, если оно выполняется, определяется следующим образом:
- Если
path::value_typeимеет тип char, преобразование, если оно выполняется, зависит от системы. Так обстоит дело в типичных системах POSIX (например, Linux), где собственная кодировка — UTF-8 иstring()не выполняет преобразование. - В противном случае, если
path::value_typeимеет тип wchar_t, преобразование, если оно выполняется, не определено. Так обстоит дело в Windows, где wchar_t имеет размер 16 бит, а собственная кодировка — UTF-16. - В противном случае, если
path::value_typeимеет тип char16_t, собственная кодировка — UTF-16, а способ преобразования не определён. - В противном случае, если
path::value_typeимеет тип char32_t, собственная кодировка — UTF-32, а способ преобразования не определён. - В противном случае, если
path::value_typeимеет тип char8_t, собственная кодировка — UTF-8, а способ преобразования не определён.
В качестве разделителя каталогов используется символ /.
1) Все выделения памяти выполняются с помощью
a.
6) Кодировка результата в случае
u8string() всегда UTF-8.Параметры
| a | - | аллокатор для создания строки |
| Требования к типам | ||
-CharT должен быть одним из типов кодируемых символов (char, wchar_t, char8_t(начиная с C++20), char16_t и char32_t). |
||
Возвращаемое значение
Внутреннее имя пути в универсальном формате имени пути, преобразованное в указанный тип строки.
Исключения
Могут быть выброшены исключения, определяемые реализацией.
Пример
#include <cstddef>
#include <filesystem>
#include <iomanip>
#include <iostream>
#include <span>
#include <string_view>
void print(std::string_view rem, auto const& str)
{
std::cout << rem << std::hex << std::uppercase << std::setfill('0');
for (const auto 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());
}
Возможный вывод:
"/家/屋" string : 2F E5 AE B6 2F E5 B1 8B u8string : 2F E5 AE B6 2F E5 B1 8B u16string : 2F 00 B6 5B 2F 00 4B 5C u32string : 2F 00 00 00 B6 5B 00 00 2F 00 00 00 4B 5C 00 00 wstring : 2F 00 00 00 B6 5B 00 00 2F 00 00 00 4B 5C 00 00
См. также
| возвращает путь в собственном формате имени пути, преобразованный в строку (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/path/generic_string