Clase path

La clase path almacena un objeto de tipo string_type, denominado aquí myname a efectos de la exposición, que se puede usar como un nombre de ruta de acceso. string_type es un sinónimo de basic_string<value_type>, donde value_type es un sinónimo de wchar_t en Windows o char en POSIX.

Para obtener más información y ejemplos de código, vea Exploración del sistema de archivos (C++).

Sintaxis

class path;

Constructores

Constructor Descripción
path Construye un objeto path.

Typedefs

Nombre de tipo Descripción
const_iterator Sinónimo de iterator.
iterator Un iterador de constante bidireccional que designa los componentes path de myname.
string_type El tipo es un sinónimo de basic_string<value_type>.

Funciones miembro

Función de miembro Descripción
append Anexa la secuencia especificada a mypath convertida e insertando un preferred_separator según sea necesario.
assign Reemplaza mypath con la secuencia especificada, convertida según sea necesario.
begin Devuelve un path::iterator que designa el primer elemento de la ruta de acceso en el nombre de ruta de acceso, si está presente.
c_str Devuelve un puntero al primer carácter en mypath.
clear Ejecuta mypath.clear().
compare Devuelve valores de comparación.
concat Anexa la secuencia especificada a mypath convertida (pero no insertando un separador) según sea necesario.
empty Devuelve mypath.empty().
end Devuelve un iterador de final de secuencia de tipo iterator.
extension Devuelve el sufijo de filename().
filename Devuelve el componente del directorio raíz de myname, específicamente empty() ? path() : *--end(). El componente puede estar vacío.
generic_string Devuelve this->string<Elem, Traits, Alloc>(al) con (en Windows) cualquier barra diagonal inversa convertida en una barra diagonal.
generic_u16string Devuelve u16string() con (en Windows) cualquier barra diagonal inversa convertida en una barra diagonal.
generic_u32string Devuelve u32string() con (en Windows) cualquier barra diagonal inversa convertida en una barra diagonal.
generic_u8string Devuelve u8string() con (en Windows) cualquier barra diagonal inversa convertida en una barra diagonal.
generic_wstring Devuelve wstring() con (en Windows) cualquier barra diagonal inversa convertida en una barra diagonal.
has_extension Devuelve !extension().empty().
has_filename Devuelve !filename().empty().
has_parent_path Devuelve !parent_path().empty().
has_relative_path Devuelve !relative_path().empty().
has_root_directory Devuelve !root_directory().empty().
has_root_name Devuelve !root_name().empty().
has_root_path Devuelve !root_path().empty().
has_stem Devuelve !stem().empty().
is_absolute Para Windows, la función devuelve has_root_name() && has_root_directory(). Para POSIX, la función devuelve has_root_directory().
is_relative Devuelve !is_absolute().
make_preferred Convierte cada separador a un preferred_separator según sea necesario.
native Devuelve la representación nativa de la ruta de acceso.
parent_path Devuelve el componente de ruta de acceso primaria de myname.
preferred_separator El objeto constante ofrece el carácter preferido para separar los componentes de la ruta de acceso, según el sistema operativo host.
relative_path Devuelve el componente de ruta de acceso relativa de myname.
remove_filename Quita el nombre de archivo.
replace_extension Reemplaza la extensión de myname.
replace_filename Reemplaza el nombre de archivo.
root_directory Devuelve el componente de directorio raíz de myname.
root_name Devuelve el componente de nombre raíz de myname.
root_path Devuelve el componente de ruta de acceso raíz de myname.
stem Devuelve el componente stem de myname.
string Convierte la secuencia almacenada en mypath.
swap Ejecuta swap(mypath, right.mypath).
u16string Convierte la secuencia almacenada en mypath a UTF-16 y la devuelve almacenada en un objeto de tipo u16string.
u32string Convierte la secuencia almacenada en mypath a UTF-32 y la devuelve almacenada en un objeto de tipo u32string.
u8string Convierte la secuencia almacenada en mypath a UTF-8 y la devuelve almacenada en un objeto de tipo u8string.
value_type El tipo describe los elementos de la ruta de acceso preferidos de sistema operativo host.
wstring Convierte la secuencia almacenada en mypath a la codificación preferida de sistema host para una secuencia wchar_t y la devuelve almacenada en un objeto de tipo wstring.

Operadores

Operador Descripción
operator= Reemplaza los elementos de la ruta de acceso por una copia de otra ruta de acceso.
operator+= Varias expresiones concat.
operator/= Varias expresiones append.
operator string_type Devuelve myname.

Requisitos

Encabezado<filesystem>:

Espacio de nombres:std::experimental::filesystem

path::append

Anexa la secuencia especificada a mypath convertida e insertando un preferred_separator según sea necesario.

template <class Source>
path& append(const Source& source);

template <class InIt>
path& append(InIt first, InIt last);

Parámetros

source
Secuencia especificada.

first
Inicio de la secuencia especificada.

last
Fin de la secuencia especificada.

path::assign

Reemplaza mypath con la secuencia especificada, convertida según sea necesario.

template <class Source>
path& assign(const Source& source);

template <class InIt>
path& assign(InIt first, InIt last);

Parámetros

source
Secuencia especificada.

first
Inicio de la secuencia especificada.

last
Fin de la secuencia especificada.

path::begin

Devuelve un path::iterator que designa el primer elemento de la ruta de acceso en el nombre de ruta de acceso, si está presente.

iterator begin() const;

path::c_str

Devuelve un puntero al primer carácter en mypath.

const value_type& *c_str() const noexcept;

path::clear

Ejecuta mypath.clear().

void clear() noexcept;

path::compare

La primera función devuelve mypath.compare(pval.native()). La segunda función devuelve mypath.compare(str). La tercera función devuelve mypath.compare(ptr).

int compare(const path& pval) const noexcept;
int compare(const string_type& str) const;
int compare(const value_type *ptr) const;

Parámetros

pval
Ruta de acceso que se va a comparar.

str
Cadena que se va a comparar.

ptr
Puntero que se va a comparar.

path::concat

Anexa la secuencia especificada a mypath convertida (pero no insertando un separador) según sea necesario.

template <class Source>
path& concat(const Source& source);

template <class InIt>
path& concat(InIt first, InIt last);

Parámetros

source
Secuencia especificada.

first
Inicio de la secuencia especificada.

last
Fin de la secuencia especificada.

path::const_iterator

Sinónimo de iterator.

typedef iterator const_iterator;

path::empty

Devuelve mypath.empty().

bool empty() const noexcept;

path::end

Devuelve un iterador de final de secuencia de tipo iterator.

iterator end() const;

path::extension

Devuelve el sufijo de filename().

path extension() const;

Comentarios

Devuelve el sufijo de filename() X tal que:

Si X == path(".") || X == path("..") o si X no contiene ningún punto, el sufijo está vacío.

De lo contrario, el sufijo comienza con (e incluye) el punto situado más al derecha.

path::filename

Devuelve el componente del directorio raíz de myname, específicamente empty() path() : *--end(). El componente puede estar vacío.

path filename() const;

path::generic_string

Devuelve this->string<Elem, Traits, Alloc>(al) con (en Windows) cualquier barra diagonal inversa convertida en una barra diagonal.

template <class Elem,
    class Traits = char_traits<Elem>,
    class Alloc = allocator<Elem>>
  basic_string<Elem, Traits, Alloc>
    generic_string(const Alloc& al = Alloc()) const;

string generic_string() const;

path::generic_u16string

Devuelve u16string() con (en Windows) cualquier barra diagonal inversa convertida en una barra diagonal.

u16string generic_u16string() const;

path::generic_u32string

Devuelve u32string() con (en Windows) cualquier barra diagonal inversa convertida en una barra diagonal.

u32string generic_u32string() const;

path::generic_u8string

Devuelve u8string() con (en Windows) cualquier barra diagonal inversa convertida en una barra diagonal.

string generic_u8string() const;

path::generic_wstring

Devuelve wstring() con (en Windows) cualquier barra diagonal inversa convertida en una barra diagonal.

wstring generic_wstring() const;

path::has_extension

Devuelve !extension().empty().

bool has_extension() const;

path::has_filename

Devuelve !filename().empty().

bool has_filename() const;

path::has_parent_path

Devuelve !parent_path().empty().

bool has_parent_path() const;

path::has_relative_path

Devuelve !relative_path().empty().

bool has_relative_path() const;

path::has_root_directory

Devuelve !root_directory().empty().

bool has_root_directory() const;

path::has_root_name

Devuelve !root_name().empty().

bool has_root_name() const;

path::has_root_path

Devuelve !root_path().empty().

bool has_root_path() const;

path::has_stem

Devuelve !stem().empty().

bool has_stem() const;

path::is_absolute

Para Windows, la función devuelve has_root_name() && has_root_directory(). Para POSIX, la función devuelve has_root_directory().

bool is_absolute() const;

path::is_relative

Devuelve !is_absolute().

bool is_relative() const;

path::iterator

Un iterador constante bidireccional que designa los componentes de ruta de acceso de myname.

class iterator
   {
   // bidirectional iterator for path
   typedef bidirectional_iterator_tag iterator_category;
   typedef path_type value_type;
   typedef ptrdiff_t difference_type;
   typedef const value_type *pointer;
   typedef const value_type& reference;
   // ...
   };

Comentarios

La clase describe un iterador constante bidireccional que designa los componentes path de myname en la secuencia:

  1. el nombre de raíz, si está presente

  2. el directorio raíz, si está presente

  3. los elementos restantes del directorio de path primaria, si está presente, que terminan con el nombre de archivo, si está presente

Para pval un objeto de tipo path:

  1. path::iterator X = pval.begin() designa el primer elemento path en el nombre de ruta de acceso, si está presente.

  2. X == pval.end() es true cuando X apunta inmediatamente después del final de la secuencia de componentes.

  3. *X devuelve una cadena que coincide con el componente actual

  4. ++X designa el componente siguiente de la secuencia, si está presente.

  5. --X designa el componente anterior de la secuencia, si existe.

  6. Al modificar myname se invalidan todos los iteradores que designan elementos en myname.

path::make_preferred

Convierte cada separador a un preferred_separator según sea necesario.

path& make_preferred();

path::native

Obtenga la representación de cadena nativa de la ruta de acceso.

const string_type& native() const noexcept;

Comentarios

La ruta de acceso está disponible en un formato genérico portátil (vea generic_string()) o el formato nativo de la ruta de acceso. Esta función devuelve la cadena nativa. En un sistema POSIX, el formato genérico y el formato nativo son los mismos.

En el ejemplo siguiente que se ejecuta en Windows 11, la cadena de ruta de acceso genérica es c:/t/temp/temp.txt y la cadena nativa es c:\\t\\temp.txt

// Compile with /std:c++17 or higher
#include <filesystem>

int main()
{
    std::filesystem::path p(R"(c:\t\temp.txt)");
    auto native = p.native(); // Windows: L"c:\\t\temp.txt"
    auto generic = p.generic_string(); // Windows: "c:/t/temp.txt"
}

path::operator=

Reemplaza los elementos de la ruta de acceso por una copia de otra ruta de acceso.

path& operator=(const path& right);
path& operator=(path&& right) noexcept;

template <class Source>
path& operator=(const Source& source);

Parámetros

right
La clase path que se copia en path.

source
path de origen.

Comentarios

El primer operador miembro copia right.myname a myname. El segundo operador miembro mueve right.myname a myname. El tercer operador miembro se comporta igual que *this = path(source).

path::operator+=

Varias expresiones concat.

path& operator+=(const path& right);
path& operator+=(const string_type& str);
path& operator+=(const value_type *ptr);
path& operator+=(value_type elem);

template <class Source>
path& operator+=(const Source& source);

template <class Elem>
path& operator+=(Elem elem);

Parámetros

right
La ruta de acceso agregada.

str
La cadena agregada.

ptr
El puntero agregado.

elem
Los value_type o Elem agregados.

source
El origen agregado.

Comentarios

Las funciones miembro se comportan igual que las siguientes expresiones correspondientes:

  1. concat(right);

  2. concat(path(str));

  3. concat(ptr);

  4. concat(string_type(1, elem));

  5. concat(source);

  6. concat(path(basic_string<Elem>(1, elem)));

path::operator/=

Varias expresiones append.

path& operator/=(const path& right);

template <class Source>
path& operator/=(const Source& source);

Parámetros

right
La ruta de acceso agregada.

source
El origen agregado.

Comentarios

Las funciones miembro se comportan igual que las siguientes expresiones correspondientes:

  1. append(right);

  2. append(source);

path::operator string_type

Devuelve myname.

operator string_type() const;

path::parent_path

Devuelve el componente de ruta de acceso primaria de myname.

path parent_path() const;

Comentarios

Devuelve el componente de ruta de acceso primaria de myname, específicamente el prefijo de myname después de quitar filename().native() y los separadores de directorio inmediatamente anteriores. (igualmente, si begin() != end(), es la combinación de todos los elementos del intervalo [begin(), --end()) aplicando operator/= sucesivamente). El componente puede estar vacío.

path::path

Construye una path de varias maneras.

path();

path(const path& right);
path(path&& right) noexcept;

template <class Source>
path(const Source& source);

template <class Source>
path(const Source& source, const locale& loc);

template <class InIt>
path(InIt first, InIt last);

template <class InIt>
path(InIt first, InIt last, const locale& loc);

Parámetros

right
La ruta de acceso de la que se va a copiar la ruta de acceso construida.

source
El origen del que se va a copiar la ruta de acceso construida.

loc
La configuración regional especificada.

first
Posición del primer elemento que se va a copiar.

last
Posición del último elemento que se va a copiar.

Comentarios

Todos los constructores construyen myname de varias maneras:

Para path() es myname().

Para path(const path& right es myname(right.myname).

Para path(path&& right) es myname(right.myname).

Para template<class Source> path(const Source& source) es myname(source).

Para template<class Source> path(const Source& source, const locale& loc) es myname(source), obteniendo las facetas codecvt necesarias desde loc.

Para template<class InIt> path(InIt first, InIt last) es myname(first, last).

Para template<class InIt> path(InIt first, InIt last, const locale& loc) es myname(first, last), obteniendo las facetas codecvt necesarias desde loc.

path::preferred_separator

El objeto constante ofrece el carácter preferido para separar los componentes de la ruta de acceso, según el sistema operativo host.

#if _WIN32_C_LIB
static constexpr value_type preferred_separator == L'\\';
#else // assume POSIX
static constexpr value_type preferred_separator == '/';
#endif // filesystem model now defined

Comentarios

En la mayoría de los contextos en Windows también se permite usar L'/' en su lugar.

path::relative_path

Devuelve el componente de ruta de acceso relativa de myname.

path relative_path() const;

Comentarios

Devuelve el componente de ruta de acceso relativa de myname, específicamente el sufijo de myname después de quitar root_path().native() y los separadores de directorio redundantes inmediatamente posteriores. El componente puede estar vacío.

path::remove_filename

Quita el nombre de archivo.

path& remove_filename();

path::replace_extension

Reemplaza la extensión de myname.

path& replace_extension(const path& newext = path());

Parámetros

newext
La nueva extensión.

Comentarios

En primer lugar, quita el sufijo extension().native() de myname. A continuación, si !newext.empty() && newext[0] != dot (donde dot es *path(".").c_str()), entonces dot se anexa a myname. Después newext se anexa a myname.

path::replace_filename

Reemplaza el nombre de archivo.

path& replace_filename(const path& pval);

Parámetros

pval
La ruta de acceso del nombre de archivo.

Comentarios

La función miembro ejecuta:

remove_filename();

*this /= pval;
return (*this);

path::root_directory

Devuelve el componente de directorio raíz de myname.

path root_directory() const;

Comentarios

El componente puede estar vacío.

path::root_name

Devuelve el componente de nombre raíz de myname.

path root_name() const;

Comentarios

El componente puede estar vacío.

path::root_path

Devuelve el componente de ruta de acceso raíz de myname.

path root_path() const;

Comentarios

Devuelve el componente de ruta de acceso raíz de myname, específicamente root_name() / root_directory. El componente puede estar vacío.

path::stem

Devuelve el componente stem de myname.

path stem() const;

Comentarios

Devuelve el componente stem de myname, específicamente filename().native() quitando cualquier extension().native() final. El componente puede estar vacío.

path::string

Convierte la secuencia almacenada en mypath.

template \<class Elem, class Traits = char_traits\<Elem>, class Alloc = allocator\<Elem>>
basic_string\<Elem, Traits, Alloc> string(const Alloc& al = Alloc()) const;
string string() const;

Comentarios

La primera función miembro (plantilla) convierte la secuencia almacenada en mypath del mismo modo que:

  1. string() para string<char, Traits, Alloc>()

  2. wstring() para string<wchar_t, Traits, Alloc>()

  3. u16string() para string<char16_t, Traits, Alloc>()

  4. u32string() para string<char32_t, Traits, Alloc>()

La segunda función miembro convierte la secuencia almacenada en mypath a la codificación preferida de sistema host para una secuencia char y la devuelve almacenada en un objeto de tipo string.

path::string_type

El tipo es un sinónimo de basic_string<value_type>.

typedef basic_string<value_type> string_type;

path::swap

Ejecuta swap(mypath, right.mypath).

void swap(path& right) noexcept;

path::u16string

Convierte la secuencia almacenada en mypath a UTF-16 y la devuelve almacenada en un objeto de tipo u16string.

u16string u16string() const;

path::u32string

Convierte la secuencia almacenada en mypath a UTF-32 y la devuelve almacenada en un objeto de tipo u32string.

u32string u32string() const;

path::u8string

Convierte la secuencia almacenada en mypath a UTF-8 y la devuelve almacenada en un objeto de tipo u8string.

string u8string() const;

path::value_type

El tipo describe los elementos path preferidos del sistema operativo anfitrión.

#if _WIN32_C_LIB
typedef wchar_t value_type;
#else // assume POSIX
typedef char value_type;
#endif // filesystem model now defined

path::wstring

Convierte la secuencia almacenada en mypath a la codificación preferida de sistema host para una secuencia wchar_t y la devuelve almacenada en un objeto de tipo wstring.

wstring wstring() const;

Consulte también

Referencia de archivos de encabezado