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) |