Namespaces
Variants

std::basic_string<CharT,Traits,Allocator>::operator+=

De es.cppreference.net
 
 
 
std::basic_string
 
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)

Agrega caracteres adicionales a la cadena.

1) Agrega la cadena str.
2) Agrega el carácter ch.
3) Agrega la cadena de caracteres terminada en nulo apuntada por s.
4) Agrega los caracteres en la lista de inicializadores ilist.
5) Convierte implícitamente t a una vista de cadena sv como si fuera mediante std::basic_string_view<CharT, Traits> sv = t;, luego agrega los caracteres en la vista de cadena sv como si fuera mediante append(sv).
Esta sobrecarga participa en la resolución de sobrecarga solo si std::is_convertible_v<const StringViewLike&,
std::basic_string_view<CharT, Traits>>
es true y std::is_convertible_v<const StringViewLike&, const CharT*> es false.

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)