std::basic_string::append
(1) | ||
basic_string& append( size_type count, CharT ch ); |
(hasta C++20) | |
constexpr basic_string& append( size_type count, CharT ch ); |
(desde C++20) | |
(2) | ||
basic_string& append( const basic_string& str ); |
(hasta C++20) | |
constexpr basic_string& append( const basic_string& str ); |
(desde C++20) | |
(3) | ||
basic_string& append( const basic_string& str, size_type pos, size_type count ); |
(hasta C++14) | |
basic_string& append( const basic_string& str, size_type pos, size_type count = npos ); |
(desde C++14) (hasta C++20) |
|
constexpr basic_string& append( const basic_string& str, size_type pos, size_type count = npos ); |
(desde C++20) | |
(4) | ||
basic_string& append( const CharT* s, size_type count ); |
(hasta C++20) | |
constexpr basic_string& append( const CharT* s, size_type count ); |
(desde C++20) | |
(5) | ||
basic_string& append( const CharT* s ); |
(hasta C++20) | |
constexpr basic_string& append( const CharT* s ); |
(desde C++20) | |
(6) | ||
template< class InputIt > basic_string& append( InputIt first, InputIt last ); |
(hasta C++20) | |
template< class InputIt > constexpr basic_string& append( InputIt first, InputIt last ); |
(desde C++20) | |
(7) | ||
basic_string& append( std::initializer_list<CharT> ilist ); |
(desde C++11) (hasta C++20) |
|
constexpr basic_string& append( std::initializer_list<CharT> ilist ); |
(desde C++20) | |
(8) | ||
template < class T > basic_string& append( const T& t ); |
(desde C++17) (hasta C++20) |
|
template < class T > constexpr basic_string& append( const T& t ); |
(desde C++20) | |
(9) | ||
template < class T > basic_string& append( const T& t, |
(desde C++17) (hasta C++20) |
|
template < class T > constexpr basic_string& append( const T& t, |
(desde C++20) | |
Añade caracteres adicionales a la cadena.
count
copias del carácter ch
.str
.[pos, pos+count)
de str
. Si la cadena solicitada se extiende más allá del final de la cadena, o si count == npos, la subcadena añadida es [pos, size())
. Si pos > str.size(), se lanza std::out_of_range. [s, s + count)
. Este rango puede contener caracteres nulos.s
. La longitud de la cadena se determina por el primer carácter nulo usando Traits::length(s). [first, last)
.
Esta sobrecarga tiene el mismo efecto que la sobrecarga (1) si |
(hasta C++11) |
Esta sobrecarga solo participa en la resolución de sobrecarga si |
(desde C++11) |
ilist
.t
a una vista sobre cadena sv
como si fuera mediante std::basic_string_view<CharT, Traits> sv = t;, entonces añade todos los caracteres de sv
como si fuera mediante append(sv.data(), sv.size()) . 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.t
a una vista sobre cadena sv
como si fuera mediante std::basic_string_view<CharT, Traits> sv = t;, entonces añade los caracteres de la subvista [pos, pos+count)
de sv
. Si la subvista solicitada se extiende más allá del final de sv
, o si count == npos, la subvista añadida es [pos, sv.size())
. Si pos >= sv.size(), se lanza std::out_of_range . 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
count | - | El número de caracteres a añadir. |
pos | - | El índice del primer carácter a añadir. |
ch | - | El valor del carácter a añadir. |
first, last | - | El rango de caracteres a añadir. |
str | - | La cadena a añadir. |
s | - | Puntero a la cadena de caracteres a añadir. |
ilist | - | Lista de inicializadores 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] 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 <string> #include <iostream> int main() { std::basic_string<char> str = "string"; const char* cptr = "C-string"; const char carr[] = "Two and one"; std::string output; // 1) Añade un char 3 veces. // Fijarse, esta es la única sobrecarga que acepta chars. output.append(3, '*'); std::cout << "1) " << output << "\n"; // 2) Añade toda una cadena output.append(str); std::cout << "2) " << output << "\n"; // 3) Añade parte de una cadena (las últimas 3 letras, en este caso) output.append(str, 3, 3); std::cout << "3) " << output << "\n"; // 4) Añade parte de una cadena estilo C // Fijarse, ya que `append` devuelve *this, podemos encadenar las llamadas output.append(1, ' ').append(carr, 4); std::cout << "4) " << output << "\n"; // 5) Añadir toda una cadena estilo C output.append(cptr); std::cout << "5) " << output << "\n"; // 6) Añadir un rango output.append(&carr[3], std::end(carr)); std::cout << "6) " << output << "\n"; // 7) Añadir una lista de inicializadores output.append({ ' ', 'l', 'i', 's', 't' }); std::cout << "7) " << output << "\n"; }
Salida:
1) *** 2) ***string 3) ***stringing 4) ***stringing Two 5) ***stringing Two C-string 6) ***stringing Two C-string and one 7) ***stringing Two C-string and one list
[editar] Véase también
Añade caracteres al final (función miembro pública) | |
Concatena dos cadenas (función) | |
Concatena una cierta cantidad de caracteres de dos cadenas (función) | |
Anexa una copia de una cadena ancha a otra (función) | |
Anexa una cierta cantidad de caracteres anchos de una cadena ancha a otra (función) |