std::filesystem::path::concat, std::filesystem::path::operator+=
De cppreference.com
< cpp | filesystem | path
path& operator+=( const path& p ); |
(1) | (desde C++17) |
path& operator+=( const string_type& str ); path& operator+=( std::basic_string_view<value_type> str ); |
(2) | (desde C++17) |
path& operator+=( const value_type* ptr ); |
(3) | (desde C++17) |
path& operator+=( value_type x ); |
(4) | (desde C++17) |
template< class CharT > path& operator+=( CharT x ); |
(5) | (desde C++17) |
template< class Source > path& operator+=( const Source& source ); |
(6) | (desde C++17) |
template< class Source > path& concat( const Source& source ); |
(7) | (desde C++17) |
template< class InputIt > path& concat( InputIt first, InputIt last ); |
(8) | (desde C++17) |
Concatena la ruta de acceso actual y el argumento.
1-3,6-7) Añade path(p).native() al nombre de ruta de acceso almacenado en *this en el formato nativo. Esto manipula directamente el valor de native() y puede no ser portátil entre sistemas operativos.
4-5) Igual que return *this += std::basic_string_view(&x, 1);
8) Igual que return *this += path(first, last);
(6) y (7) participan en la resolución de sobrecargas solo si Source
y path
no son el mismo tipo, y ya sea que:
-
Source
es una especialización de std::basic_string o std::basic_string_view, o - std::iterator_traits<std::decay_t<Source>>::value_type es válido y denota una codificación para un tipo carácter, posiblemente calificado const (char, char8_t, (desde C++20)char16_t, char32_t, o wchar_t).
Contenido |
[editar] Parámetros
p | - | La ruta de acceso a añadir. |
str | - | La cadena o vista sobre cadena a añadir. |
ptr | - | Un puntero al inicio de una cadena terminada en nulo a añadir. |
x | - | Un solo carácter a añadir. |
source | - | std::basic_string, std::basic_string_view, cadena multicarácter terminada en nulo, o un iterador de entrada que apunta a una secuencia multicarácter terminada en nulo, que representa un nombre de ruta (ya sea en formato portátil o nativo). |
first, last | - | Un par de InputIterator que especifican una secuencia multicarácter que representa un nombre de ruta. |
Requisitos de tipo | ||
-InputIt debe satisfacer los requisitos de InputIterator.
| ||
-El tipo valor de InputIt debe ser uno de los tipos carácter codificados (char, wchar_t, char16_t y char32_t).
| ||
-CharT debe ser uno de los tipos carácter codificados (char, wchar_t, char16_t y char32_t).
|
[editar] Valor de retorno
*this
[editar] Excepciones
Puede lanzar std::bad_alloc si la asignación de memoria fracasa.
[editar] Notas
A diferencia de append() u operator/=, nunca se introducen separadores de directorio adicionales.
[editar] Ejemplo
Ejecuta este código
#include <iostream> #include <filesystem> namespace fs = std::filesystem; int main() { fs::path p1; // ruta vacía p1 += "var"; // no inserta un separador std::cout << "\"\" + \"var\" == " << p1 << '\n'; p1 += "lib"; // no inserta un separador std::cout << "\"\" + \"var\" + \"lib\" == " << p1 << '\n'; }
Salida:
"" + "var" == "var" "" + "var" + "lib" == "varlib"
[editar] 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 3055 | C++17 | La especificación de concatenar un solo carácter estaba mal formada. | Se hizo bien formada. |
LWG 3244 | C++17 | Faltaba la restricción que Source no podía ser de tipo path .
|
Se agregó. |
[editar] Véase también
Agrega elementos a la ruta de acceso con un separador de directorio. (función miembro pública) | |
Concatena dos rutas de acceso con un separador de directorio. (función) |