std::filesystem::path::path
De cppreference.com
<tbody>
</tbody>
path() noexcept; |
(1) | (desde C++17) |
path( const path& p ); |
(2) | (desde C++17) |
path( path&& p ) noexcept; |
(3) | (desde C++17) |
path( string_type&& source, format fmt = auto_format ); |
(4) | (desde C++17) |
template< class Source > path( const Source& source, format fmt = auto_format ); |
(5) | (desde C++17) |
template< class InputIt > path( InputIt first, InputIt last, format fmt = auto_format ); |
(6) | (desde C++17) |
template< class Source > path( const Source& source, const std::locale& loc, format fmt = auto_format ); |
(7) | (desde C++17) |
template< class InputIt > path( InputIt first, InputIt last, const std::locale& loc, format fmt = auto_format ); |
(8) | (desde C++17) |
Construye una nueva ruta de acceso.
1) Construye una ruta de acceso vacía.
2) Constructor de copia. Construye una ruta cuyo nombre de ruta de acceso, tanto en formatos nativos como en genéricos, es el mismo que el de
p.3) Constructor de movimiento. Construye una ruta cuyo nombre de ruta de acceso, tanto en formatos nativos como en genéricos, es el mismo que el de
p. p se deja en un estado válido pero no especificado.4-6) Construye la ruta de una secuencia de caracteres (el formato se interpreta como se especifica por
fmt) proporcionada por source (4,5), que es un puntero o un iterador de entrada a una secuencia de caracteres o caracteres anchos terminada en nulo, un std::basic_string o un std::basic_string_view, o representada por un par de iteradores de entrada [first, last) (6). Se admite cualquiera de los tipos carácter char, char8_t, (desde C++20)char16_t, char32_t, wchar_t, y el método de conversión al juego de caracteres nativo depende del tipo carácter utilizado por source.
- Si el tipo carácter fuente es
char, la codificación de la fuente se supone que es la codificación nativa angosta (de tal manera que no se necesita conversión en los sistemas POSIX).
- Si el tipo carácter fuente es
|
(desde C++20) |
- Si el tipo carácter fuente es
char16_t, se utiliza la conversión de UTF-16 a la codificación del sistema de archivos nativa. - Si el tipo carácter fuente es
char32_t, se utiliza la conversión de UTF-32 a la codificación del sistema de archivos nativa. - Si el tipo carácter fuente es
wchar_t, se supone que la entrada es la codificación ancha nativa (de tal manera que no se necesita conversión en los sistemas Windows).
- Si el tipo carácter fuente es
7-8) Construye la ruta de una secuencia de caracteres (el formato se interpreta como se especifica por
fmt) proporcionada por source (7), que es un puntero o un iterador de entrada a una secuencia de caracteres terminada en nulo, un std::string, un std::basic_string_view, o representada por un par de iteradores de entrada [first, last) (8). El único tipo carácter admitido es char. Utiliza loc para realizar la conversión de codificación de caracteres. Si value_type es wchar_t, convierte de ancho utilizando la faceta std::codecvt<wchar_t, char, std::mbstate_t> de loc. De lo contrario, primero convierte a ancho utilizando la faceta std::codecvt<wchar_t, char, std::mbstate_t> y luego convierte al tipo carácter nativo del sistema de archivos utilizando la faceta std::codecvt<wchar_t,value_type> de loc.(5) y (7) participan en la resolución de sobrecargas solo si Source y path no son el mismo tipo, y ya sea que:
Sourcees una especialización de std::basic_string o std::basic_string_view, ostd::iterator_traits<std::decay_t<Source>>::value_typees válido y denota una codificación para un tipo carácter, posiblemente calificadoconst(char,char8_t, (desde C++20)char16_t,char32_t, owchar_t).
Parámetros
| p | - | Una ruta de acceso a copiar. |
| source | - | std::basic_string, std::basic_string_view, puntero a una cadena de caracteres terminada en nulo, o un iterador de entrada con un tipo valor carácter que apunta a la secuencia terminada en nulo (el tipo carácter debe ser char para la sobrecarga (7)).
|
| first, last | - | Un par de iteradores de entrada (InputIterator) que especifican la secuencia de caracteres. |
| fmt | - | Un enumerador de tipo path::format que especifica cómo se debe interpretar el formato del nombre de ruta de acceso. |
| loc | - | La configuración regional que define la conversión de codificación a usar. |
| Requisitos de tipo | ||
-InputIt debe satisfacer los requisitos de InputIterator.
| ||
-El tipo valor de InputIt debe ser uno de los tipos carácter char, wchar_t, char8_t, (desde C++20)char16_t y char32_t a usar en la sobrecarga (6).
| ||
-El tipo valor de InputIt debe ser char a usar en la sobrecarga (8).
| ||
Excepciones
2, 4-8) Puede lanzar excepciones definidas por la implementación.
Notas
|
Para la generación de nombres de ruta de acceso portátiles a partir de cadenas Unicode, véase |
(hasta C++20) |
|
El constructor de |
(desde C++20) |
Ejemplo
Ejecuta este código
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::path p1 = "/usr/lib/sendmail.cf"; // formato portátil
fs::path p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"; // formato nativo
fs::path p3 = U"D:/猫.txt"; // cadena UTF-32
fs::path p4 = u8"~/狗.txt"; // cadena UTF-8
std::cout << "p1 = " << p1 << '\n'
<< "p2 = " << p2 << '\n'
<< "p3 = " << p3 << '\n'
<< "p4 = " << p4 << '\n';
}
Salida:
p1 = "/usr/lib/sendmail.cf"
p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"
p3 = "D:/猫.txt"
p4 = "~/狗.txt"
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3244 | C++17 | Faltaba la restricción que Source no puede ser de tipo path.
|
Se agregó. |
Véase también
(C++17)(en desuso en C++20) |
Crea una ruta de acceso a partir de una fuente codificada en UTF-8. (función) |