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.Contenido |
[editar] 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. |
[editar] Valor de retorno
*this
[editar] Complejidad
No existen garantías estándar de complejidad. Las implementaciones típicas se comportan de manera similar a std::vector::insert.
[editar] 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.
[editar] 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.
[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 2946 | C++17 | La sobrecarga string_view ocasiona ambigüedad en algunos casos.
|
Se evitó haciéndola una plantilla. |
[editar] 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"
[editar] Véase también
Añade caracteres al final (función miembro pública) |