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:
el nombre de raíz, si está presente
el directorio raíz, si está presente
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
:
path::iterator X = pval.begin()
designa el primer elementopath
en el nombre de ruta de acceso, si está presente.X == pval.end()
estrue
cuandoX
apunta inmediatamente después del final de la secuencia de componentes.*X
devuelve una cadena que coincide con el componente actual++X
designa el componente siguiente de la secuencia, si está presente.--X
designa el componente anterior de la secuencia, si existe.Al modificar
myname
se invalidan todos los iteradores que designan elementos enmyname
.
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:
concat(right);
concat(path(str));
concat(ptr);
concat(string_type(1, elem));
concat(source);
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:
append(right);
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:
string()
parastring<char, Traits, Alloc>()
wstring()
parastring<wchar_t, Traits, Alloc>()
u16string()
parastring<char16_t, Traits, Alloc>()
u32string()
parastring<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;