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.

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) [editar]
Concatena dos rutas de acceso con un separador de directorio.
(función) [editar]