Espacios de nombres
Variantes
Acciones

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
< cpp‎ | filesystem‎ | path
 
 
 
 
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) (desde C++17)
(2) (desde 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;
(desde C++17)
(hasta C++20)
std::u8string generic_u8string() const;
(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_type es char, 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 y string() no ejecuta ninguna conversión.
  • De lo contrario, si path::value_type es wchar_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_type es char16_t, la codificación nativa es UTF-16 y el método de conversión no está especificado.
  • De lo contrario, si path::value_type es char32_t, la codificación nativa es UTF-32 y el método de conversión no está especificado.
  • De lo contrario, si path::value_type es char8_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.

Contenido

[editar] 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).

[editar] 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.

[editar] Excepciones

Puede lanzar excepciones definidas por la implementación.

[editar] 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

[editar] Véase también

Devuelve la ruta de acceso en un nombre de ruta de acceso convertido a una cadena.
(función miembro pública) [editar]