std::filesystem::path::concat, std::filesystem::path::operator+=
De cppreference.com
<tbody>
</tbody>
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:
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 | - | 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).
| ||
Valor de retorno
*this
Excepciones
Puede lanzar std::bad_alloc si la asignación de memoria fracasa.
Notas
A diferencia de append() u operator/=, nunca se introducen separadores de directorio adicionales.
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"
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ó. |
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) |