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 memoriastd::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ónstd::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) |