std::filesystem:: u8path
|
Definido en el encabezado
<filesystem>
|
||
|
template
<
class
Source
>
std:: filesystem :: path u8path ( const Source & source ) ; |
(1) |
(desde C++17)
(obsoleto en C++20) |
|
template
<
class
InputIt
>
std:: filesystem :: path u8path ( InputIt first, InputIt last ) ; |
(2) |
(desde C++17)
(obsoleto en C++20) |
Construye una ruta
p
a partir de una secuencia codificada en UTF-8 de
char
s
o
char8_t
s
(desde C++20)
, proporcionada como un
std::string
, o como un
std::string_view
, o como una cadena multibyte terminada en nulo, o como un par de iteradores
[
first, last
)
.
-
Si
path::value_typees char y la codificación nativa es UTF-8, construye una ruta directamente como si fuera mediante path ( source ) o path ( first, last ) . Nota: esta es la situación típica de un sistema POSIX que utiliza Unicode, como Linux. -
De lo contrario, si
path::value_typees wchar_t y la codificación nativa es UTF-16 (esta es la situación en Windows), o sipath::value_typees char16_t (codificación nativa garantizada UTF-16) o char32_t (codificación nativa garantizada UTF-32), entonces primero convierte la secuencia de caracteres UTF-8 a una cadena temporaltmpde tipopath::string_typey luego la nueva ruta se construye como si fuera mediante path ( tmp ) . -
De lo contrario (para codificaciones de caracteres estrechos no UTF-8 y para
wchar_t
no UTF-16), primero convierte la secuencia de caracteres UTF-8 a una cadena temporal codificada en UTF-32
tmpde tipo std:: u32string , y luego la nueva ruta se construye como si fuera mediante path ( tmp ) (esta ruta se toma en un sistema POSIX con un sistema de archivos codificado en multibyte o byte simple no Unicode).
Contenidos |
Parámetros
| source | - | una cadena std::string codificada en UTF-8, std::string_view , un puntero a una cadena multibyte terminada en nulo, o un iterador de entrada con tipo de valor char que apunta a una cadena multibyte terminada en nulo |
| first, last | - | par de LegacyInputIterator s que especifican una secuencia de caracteres codificada en UTF-8 |
| Requisitos de tipo | ||
-
InputIt
debe cumplir con los requisitos de
LegacyInputIterator
.
|
||
-
Source
o
InputIt
debe ser
char
o
char8_t
.
(desde C++20)
|
||
Valor de retorno
La ruta construida a partir de la cadena de entrada después de la conversión de UTF-8 a la codificación de caracteres nativa del sistema de archivos.
Excepciones
Puede lanzar std::bad_alloc si la asignación de memoria falla.
Notas
En sistemas donde el formato de ruta nativo difiere del formato de ruta genérico (ni los sistemas Windows ni POSIX son ejemplos de tales sistemas operativos), si el argumento para esta función utiliza formato genérico, será convertido a nativo.
Ejemplo
#include <cstdio> #ifdef _MSC_VER #include <fcntl.h> #include <io.h> #else #include <clocale> #include <locale> #endif #include <filesystem> #include <fstream> int main() { #ifdef _MSC_VER _setmode(_fileno(stderr), _O_WTEXT); #else std::setlocale(LC_ALL, ""); std::locale::global(std::locale("")); #endif std::filesystem::path p(u8"要らない.txt"); std::ofstream(p) << "File contents"; // Prior to LWG2676 uses operator string_type() // on MSVC, where string_type is wstring, only // works due to non-standard extension. // Post-LWG2676 uses new fstream constructors // Native string representation can be used with OS-specific APIs #ifdef _MSC_VER if (std::FILE* f = _wfopen(p.c_str(), L"r")) #else if (std::FILE* f = std::fopen(p.c_str(), "r")) #endif { for (int ch; (ch = fgetc(f)) != EOF; std::putchar(ch)) {} std::fclose(f); } std::filesystem::remove(p); }
Salida posible:
File contents
Véase también
|
(C++17)
|
representa una ruta
(clase) |