std::basic_string::operator+=
| (1) | ||
basic_string& operator+=( const basic_string& str ); |
(hasta C++20) | |
constexpr basic_string& operator+=( const basic_string& str ); |
(desde C++20) | |
| (2) | ||
basic_string& operator+=( CharT ch ); |
(hasta C++20) | |
constexpr basic_string& operator+=( CharT ch ); |
(desde C++20) | |
| (3) | ||
basic_string& operator+=( const CharT* s ); |
(hasta C++20) | |
constexpr basic_string& operator+=( const CharT* s ); |
(desde C++20) | |
| (4) | ||
basic_string& operator+=( std::initializer_list<CharT> ilist ); |
(desde C++11) (hasta C++20) |
|
constexpr basic_string& operator+=( std::initializer_list<CharT> ilist ); |
(desde C++20) | |
| (5) | ||
template < class T > basic_string& operator+=( const T& t ); |
(desde C++17) (hasta C++20) |
|
template < class T > constexpr basic_string& operator+=( const T& t ); |
(desde C++20) | |
Añade caracteres adicionales a la cadena.
str.ch.s. ilist.t a una vista sobre cadena sv como si fuera mediante std::basic_string_view<CharT, Traits> sv = t;, entonces añade caracteres en la vista sobre cadena sv como si fuera mediante append(sv). Esta sobrecarga solo participa en la resolución de sobrecargas si std::is_convertible_v<const T&, std::basic_string_view<CharT, Traits>> es true y std::is_convertible_v<const T&, const CharT*> es false.Parámetros
| str | - | Cadena a añadir |
| ch | - | Valor del 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 por alguna razón se lanza una excepción, esta función no tiene efecto (garantía de excepción fuerte). (desde C++11)
Si la operación resultara en size() > max_size(), lanza std::length_error.
Notas
La sobrecarga (2) puede aceptar cualquier tipo que sea implícitamente convertible 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.
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 2946 | C++17 | La sobrecarga string_view ocasiona ambigüedad en algunos casos.
|
Se evitó haciéndola una plantilla. |
Ejemplo
#include <iostream>
#include <iomanip>
#include <string>
int main()
{
std::string str;
str.reserve(50); //reserva suficiente espacio de almacenamiento para evitar reasignación de memoria
std::cout << std::quoted(str) << '\n'; //cadena vacía
str += "Esta";
std::cout << std::quoted(str) << '\n';
str += std::string(" es ");
std::cout << std::quoted(str) << '\n';
str += 'una';
std::cout << std::quoted(str) << '\n';
str += {' ','c','a','d','e','n','a','.'};
std::cout << std::quoted(str) << '\n';
str += 76.85; // equivalente a str += static_cast<char>(76.85), puede que no sea la intención
std::cout << std::quoted(str) << '\n';
}
Salida:
""
"Esta"
"Esta es "
"Esta es una"
"Esta es una cadena."
"Esta es una cadena.L"
Véase también
| Añade caracteres al final (función miembro pública) |