std::filesystem::path:: concat, std::filesystem::path:: operator+=
|
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 actual y el argumento
(6)
y
(7)
participan en la resolución de sobrecarga solo si
Source
y
path
no son del mismo tipo, y se cumple alguna de las siguientes condiciones:
-
Sourcees 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 un tipo de carácter de codificación posiblemente calificado como const ( char , char8_t , (desde C++20) char16_t , char32_t , o wchar_t ).
Contenidos |
Parámetros
| p | - | ruta a añadir |
| str | - | cadena o string view a añadir |
| ptr | - | puntero al inicio de una cadena terminada en nulo a añadir |
| x | - | carácter individual a añadir |
| source | - | std::basic_string , std::basic_string_view , cadena multibyte terminada en nulo, o un iterador de entrada que apunta a una secuencia multibyte terminada en nulo, que representa un nombre de ruta (ya sea en formato portable o nativo) |
| first, last | - | par de LegacyInputIterator s que especifican una secuencia multibyte que representa un nombre de ruta |
| Requisitos de tipo | ||
-
InputIt
debe cumplir con los requisitos de
LegacyInputIterator
.
|
||
-
InputIt
debe ser uno de los tipos de caracteres codificados (
char
,
wchar_t
,
char16_t
y
char32_t
).
|
||
-
CharT
debe ser uno de los tipos de caracteres codificados (
char
,
wchar_t
,
char16_t
y
char32_t
).
|
||
Valor de retorno
* this
Excepciones
Puede lanzar std:: bad_alloc si falla la asignación de memoria.
Notas
A diferencia de append() o operator/= , nunca se introducen separadores de directorio adicionales.
Ejemplo
#include <filesystem> #include <iostream> #include <string> int main() { std::filesystem::path p1; // una ruta vacía p1 += "var"; // no inserta un separador std::cout << R"("" + "var" --> )" << p1 << '\n'; p1 += "lib"; // no inserta un separador std::cout << R"("var" + "lib" --> )" << p1 << '\n'; auto str = std::string{"1234567"}; p1.concat(std::begin(str) + 3, std::end(str) - 1); std::cout << "p1.concat --> " << p1 << '\n'; }
Salida:
"" + "var" --> "var" "var" + "lib" --> "varlib" p1.concat --> "varlib456"
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3055 | C++17 | la especificación para concatenar un solo carácter estaba mal formada | se hizo bien formada |
| LWG 3244 | C++17 |
faltaba la restricción de que
Source
no puede ser
path
|
añadida |
Véase también
|
agrega elementos a la ruta con un separador de directorio
(función miembro pública) |
|
|
(C++17)
|
concatena dos rutas con un separador de directorio
(función) |