std::experimental::filesystem:: u8path
|
Definido en el encabezado
<experimental/filesystem>
|
||
|
template
<
class
Source
>
path u8path ( const Source & source ) ; |
(1) | (filesystem TS) |
|
template
<
class
InputIt
>
path u8path ( InputIt first, InputIt last ) ; |
(2) | (filesystem TS) |
Construye una ruta
p
a partir de una secuencia codificada en UTF-8 de
char
s, suministrada ya sea como un
std::string
, 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. -
En caso 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 ) . -
En caso 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, 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
.
|
||
-
InputIt
debe ser
char
.
|
||
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 filesystem_error en errores de API del sistema operativo subyacente o std:: bad_alloc si falla la asignación de memoria.
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 está utilizando formato genérico, será convertido a nativo.
Ejemplo
#include <clocale> #include <cstdio> #include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { std::setlocale(LC_ALL, "en_US.utf8"); std::locale::global(std::locale("en_US.utf8")); fs::path p = fs::u8path(u8"要らない.txt"); // la representación de cadena nativa puede usarse con APIs del sistema operativo std::ofstream(p) << "File contents"; // esto usa operator string() if (std::FILE* f = std::fopen(p.c_str(), "r")) { int ch; while ((ch=fgetc(f))!= EOF) putchar(ch); std::fclose(f); } // las representaciones multibyte y wide pueden usarse para salida std::cout.imbue(std::locale()); std::cout << "\nFile name in narrow multibyte encoding: " << p.string() << '\n'; std::wcerr.imbue(std::locale()); std::wcerr << "File name in wide encoding: " << p.wstring() << '\n'; fs::remove(p); }
Salida posible:
File contents File name in narrow multibyte encoding: 要らない.txt File name in wide encoding: 要らない.txt
Véase también
|
representa una ruta
(clase) |