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
De cppreference.com
</tbody> <tbody class="t-dcl-rev t-dcl-rev-num t-dcl-rev-notes t-since-cxx17 "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody>
|
|
(1) | (desde C++17) |
| (2) | (desde C++17) | |
|
|
||
|
|
||
|
|
||
|
|
||
| (3) | ||
|
|
(desde C++17) (hasta C++20) |
|
|
|
(desde C++20) | |
Devuelve el nombre de ruta de acceso interno en formato de nombre de ruta de acceso genérico, convertido al tipo de cadena específico. La conversión, si la hay, se ejecuta de la siguiente manera:
- Si
path::value_typeeschar, la conversión, si la hay, es dependiente del sistema. Este es el caso en los sistemas POSIX habituales (tales como Linux), donde la codificación nativa es UTF-8 ystring()no ejecuta ninguna conversión. - De lo contrario, si
path::value_typeeswchar_t, la conversión, si la hay, no está especificado. Este es el caso en Windows, donde wchar_t es 16 bit y la codificación nativa es UTF-16. - De lo contrario, si
path::value_typeeschar16_t, la codificación nativa es UTF-16 y el método de conversión no está especificado. - De lo contrario, si
path::value_typeeschar32_t, la codificación nativa es UTF-32 y el método de conversión no está especificado. - De lo contrario, si
path::value_typeeschar8_t, la codificación nativa es UTF-8 y el método de conversión no está especificado.
El carácter / (barra inclinada) se utiliza como el separador de directorio.
1) Todas las asignaciones de memoria se ejecutan por a.
3) La codificación resultado en el caso de u8string() es siempre UTF-8.
Parámetros
| a | - | El asignador de memoria con el que construir la cadena. |
| Requisitos de tipo | ||
-CharT debe ser uno de los tipos carácter codificados (char, wchar_t, char8_t (desde C++20), char16_t y char32_t).
| ||
Valor de retorno
El nombre de ruta de acceso interno en formato de nombre de ruta de acceso genérico, convertido al tipo de cadena específico.
Excepciones
Puede lanzar excepciones definidas por la implementación.
Ejemplo
#include <cstddef> #include <filesystem> #include <iomanip> #include <iostream> #include <span> #include <string_view> void imprimir(std::string_view comentario, auto const& str) { std::cout << comentario << 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'; imprimir("string : ", p.generic_string ()); imprimir("u8string : ", p.generic_u8string ()); imprimir("u16string : ", p.generic_u16string()); imprimir("u32string : ", p.generic_u32string()); // imprimir("wstring : ", p.generic_wstring ()); // gcc-11.0.0 2020.12.30 still fails, clang-10 - de acuerdo }
Posible salida:
"/家/屋" 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