std::basic_string<CharT,Traits,Allocator>:: operator+=
|
basic_string
&
operator
+
=
(
const
basic_string
&
str
)
;
|
(1) | (constexpr desde C++20) |
|
basic_string
&
operator
+
=
(
CharT ch
)
;
|
(2) | (constexpr desde C++20) |
|
basic_string
&
operator
+
=
(
const
CharT
*
s
)
;
|
(3) | (constexpr desde C++20) |
|
basic_string
&
operator
+
=
(
std::
initializer_list
<
CharT
>
ilist
)
;
|
(4) |
(desde C++11)
(constexpr desde C++20) |
|
template
<
class
StringViewLike
>
basic_string & operator + = ( const StringViewLike & t ) ; |
(5) |
(desde C++17)
(constexpr desde C++20) |
Añade caracteres adicionales a la cadena.
std:: basic_string_view < CharT, Traits >> es true y std:: is_convertible_v < const StringViewLike & , const CharT * > es false .
Contenidos |
Parámetros
| str | - | cadena a añadir |
| ch | - | valor de carácter a añadir |
| s | - | puntero a una cadena de caracteres terminada en nulo a añadir |
| ilist | - | std::initializer_list con los caracteres a añadir |
| t | - | objeto (convertible a std::basic_string_view ) con los caracteres a añadir |
Valor de retorno
* this
Complejidad
No existen garantías estándar de complejidad, las implementaciones típicas se comportan de manera similar a std::vector::insert() .
Excepciones
Si la operación causara que
size()
exceda
max_size()
, lanza
std::length_error
.
Si se lanza una excepción por cualquier razón, esta función no tiene efecto ( strong exception safety guarantee ).
Notas
Sobrecarga
(
2
)
puede aceptar cualquier tipo que sea convertible implícitamente a
CharT
. Para
std::string
, donde
CharT
es
char
, el conjunto de tipos aceptables incluye todos los tipos aritméticos. Esto puede tener efectos no deseados.
Ejemplo
#include <iomanip> #include <iostream> #include <string> int main() { std::string str; // reservar espacio de almacenamiento suficiente para evitar reasignación de memoria str.reserve(50); std::cout << std::quoted(str) << '\n'; // cadena vacía str += "This"; std::cout << std::quoted(str) << '\n'; str += std::string(" is "); std::cout << std::quoted(str) << '\n'; str += 'a'; std::cout << std::quoted(str) << '\n'; str += {' ', 's', 't', 'r', 'i', 'n', 'g', '.'}; std::cout << std::quoted(str) << '\n'; str += 69.96; // Equivalente a str += static_cast<char>(69.96); // 'E' (código ASCII 69) se añade mediante la sobrecarga (2), // lo cual podría no ser la intención. // Para añadir un valor numérico, considere std::to_string(): str += std::to_string(1729); std::cout << std::quoted(str) << '\n'; }
Salida:
"" "This" "This is " "This is a" "This is a string." "This is a string.E1729"
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 847 | C++98 | no existía garantía de seguridad de excepciones | se añadió garantía fuerte de seguridad de excepciones |
| LWG 2946 | C++17 | la sobrecarga ( 5 ) causaba ambigüedad en algunos casos | evitado al convertirla en plantilla |
Véase también
|
añade caracteres al final
(función miembro pública) |