Espacios de nombres
Variantes
Acciones

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:

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

#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.

IDAplicado aComportamiento según lo publicadoComportamiento correcto
LWG 3055C++17La especificación de concatenar un solo carácter estaba mal formada.Se hizo bien formada.
LWG 3244C++17Faltaba 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) [editar]
Concatena dos rutas de acceso con un separador de directorio.
(función) [editar]