Namespaces
Variants

std::filesystem::path:: path

From es.cppreference.net
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 un nuevo path objeto.

1) Construye una ruta vacía.
2) Constructor de copia. Construye una ruta cuyo nombre de ruta, tanto en formato nativo como genérico, es el mismo que el de p .
3) Constructor de movimiento. Construye una ruta cuyo nombre de ruta, tanto en formato nativo como genérico, es el mismo que el de p , p queda en un estado válido pero no especificado.
4-6) Construye la ruta a partir de una secuencia de caracteres (formato interpretado según lo especificado por fmt ) proporcionada por source (4,5) , que es un puntero o un iterador de entrada a una secuencia de caracteres/caracteres anchos terminada en nulo, un std::basic_string o un std::basic_string_view , o representado como un par de iteradores de entrada [ first , last ) (6) . Se permite cualquiera de los tipos de caracteres char , char8_t , (desde C++20) char16_t , char32_t , wchar_t , y el método de conversión al conjunto de caracteres nativo depende del tipo de carácter utilizado por source .
  • Si el tipo de carácter fuente es char , se asume que la codificación de la fuente es la codificación estrecha nativa (por lo que no se realiza conversión en sistemas POSIX).
  • Si el tipo de carácter fuente es char8_t , se utiliza la conversión de UTF-8 a la codificación nativa del sistema de archivos.
(desde C++20)
  • Si el tipo de carácter fuente es char16_t , se utiliza la conversión de UTF-16 a la codificación nativa del sistema de archivos.
  • Si el tipo de carácter fuente es char32_t , se utiliza la conversión de UTF-32 a la codificación nativa del sistema de archivos.
  • Si el tipo de carácter fuente es wchar_t , se asume que la entrada está en la codificación ancha nativa (por lo que no se realiza conversión en Windows).
7,8) Construye la ruta a partir de una secuencia de caracteres (formato interpretado según lo especificado 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::string_view , o representado como un par de iteradores de entrada [ first , last ) (8) . El único tipo de carácter permitido es char . Utiliza loc para realizar la conversión de codificación de caracteres. Si value_type es wchar_t , convierte a ancho usando el facet std:: codecvt < wchar_t , char , std:: mbstate_t > de loc . De lo contrario, primero convierte a ancho usando el facet std:: codecvt < wchar_t , char , std:: mbstate_t > y luego convierte al tipo de carácter nativo del sistema de archivos usando el facet std:: codecvt < wchar_t ,value_type > de loc .

(5) y (7) participan en la resolución de sobrecarga solo si Source y path no son del mismo tipo, y ya sea:

Contenidos

Parámetros

p - una ruta a copiar
source - std::basic_string , std::basic_string_view , puntero a una cadena de caracteres terminada en nulo, o iterador de entrada con un tipo de valor carácter que apunte a una secuencia de caracteres terminada en nulo (el tipo de carácter debe ser char para la sobrecarga (7) )
first, last - par de LegacyInputIterator s que especifican una secuencia de caracteres
fmt - enumerador de tipo path::format que especifica cómo se debe interpretar el formato del nombre de ruta
loc - configuración regional que define la conversión de codificación a utilizar
Requisitos de tipo
-
InputIt debe cumplir con los requisitos de LegacyInputIterator .
-
El tipo de valor de InputIt debe ser uno de los tipos de carácter char , wchar_t , char8_t , (desde C++20) char16_t y char32_t para usar la sobrecarga (6) .
-
El tipo de valor de InputIt debe ser char para usar la sobrecarga (8) .

Excepciones

2,4-8) Puede lanzar excepciones definidas por la implementación.

Notas

Para la generación portable de nombres de ruta a partir de cadenas Unicode, consulte u8path .

(hasta C++20)

path el constructor admite la creación desde cadenas UTF-8 cuando la fuente es una secuencia de char8_t .

(desde C++20)

Ejemplo

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    fs::path p1 = "/usr/lib/sendmail.cf"; // formato portable
    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 que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Se aplica a Comportamiento publicado Comportamiento correcto
LWG 3244 C++17 faltaba la restricción de que Source no puede ser path añadida

Véase también

(C++17) (obsoleto en C++20)
crea un path desde una fuente codificada en UTF-8
(función)