std::basic_string::replace
| (1) | ||
| basic_string& replace( size_type pos, size_type count, const basic_string& str ); |
(hasta C++20) | |
| constexpr basic_string& replace( size_type pos, size_type count, const basic_string& str ); |
(desde C++20) | |
| (1) | ||
| basic_string& replace( const_iterator first, const_iterator last, const basic_string& str ); |
(hasta C++20) | |
| constexpr basic_string& replace( const_iterator first, const_iterator last, const basic_string& str ); |
(desde C++20) | |
| (2) | ||
| basic_string& replace( size_type pos, size_type count, const basic_string& str, |
(hasta C++14) | |
| basic_string& replace( size_type pos, size_type count, const basic_string& str, |
(desde C++14) (hasta C++20) |
|
| constexpr basic_string& replace( size_type pos, size_type count, const basic_string& str, |
(desde C++20) | |
| (3) | ||
| template< class InputIt > basic_string& replace( const_iterator first, const_iterator last, |
(hasta C++20) | |
| template< class InputIt > constexpr basic_string& replace( const_iterator first, const_iterator last, |
(desde C++20) | |
| (4) | ||
| basic_string& replace( size_type pos, size_type count, const CharT* cstr, size_type count2 ); |
(hasta C++20) | |
| constexpr basic_string& replace( size_type pos, size_type count, const CharT* cstr, size_type count2 ); |
(desde C++20) | |
| (4) | ||
| basic_string& replace( const_iterator first, const_iterator last, const CharT* cstr, size_type count2 ); |
(hasta C++20) | |
| constexpr basic_string& replace( const_iterator first, const_iterator last, const CharT* cstr, size_type count2 ); |
(desde C++20) | |
| (5) | ||
| basic_string& replace( size_type pos, size_type count, const CharT* cstr ); |
(hasta C++20) | |
| constexpr basic_string& replace( size_type pos, size_type count, const CharT* cstr ); |
(desde C++20) | |
| (5) | ||
| basic_string& replace( const_iterator first, const_iterator last, const CharT* cstr ); |
(hasta C++20) | |
| constexpr basic_string& replace( const_iterator first, const_iterator last, const CharT* cstr ); |
(desde C++20) | |
| (6) | ||
| basic_string& replace( size_type pos, size_type count, size_type count2, CharT ch ); |
(hasta C++20) | |
| constexpr basic_string& replace( size_type pos, size_type count, size_type count2, CharT ch ); |
(desde C++20) | |
| (6) | ||
| basic_string& replace( const_iterator first, const_iterator last, size_type count2, CharT ch ); |
(hasta C++20) | |
| constexpr basic_string& replace( const_iterator first, const_iterator last, size_type count2, CharT ch ); |
(desde C++20) | |
| (7) | ||
| basic_string& replace( const_iterator first, const_iterator last, std::initializer_list<CharT> ilist ); |
(desde C++11) (hasta C++20) |
|
| constexpr basic_string& replace( const_iterator first, const_iterator last, std::initializer_list<CharT> ilist ); |
(desde C++20) | |
| (8) | ||
| template < class T > basic_string& replace( size_type pos, size_type count, |
(desde C++17) (hasta C++20) |
|
| template < class T > constexpr basic_string& replace( size_type pos, size_type count, |
(desde C++20) | |
| (8) | ||
| template < class T > basic_string& replace( const_iterator first, const_iterator last, |
(desde C++17) (hasta C++20) |
|
| template < class T > constexpr basic_string& replace( const_iterator first, const_iterator last, |
(desde C++20) | |
| (9) | ||
| template < class T > basic_string& replace( size_type pos, size_type count, const T& t, |
(desde C++17) (hasta C++20) |
|
| template < class T > constexpr basic_string& replace( size_type pos, size_type count, const T& t, |
(desde C++20) | |
Reemplaza la parte de la cadena indicada ya sea por [pos, pos + count) o [first, last) con una nueva cadena.
La nueva cadena puede ser uno de:
str.[pos2, pos2 + count2) de str, excepto si count2==npos o si se extendiera más allá de str.size(), se usa [pos2, str.size()).[first2, last2).
|
Esta sobrecarga tiene el mismo efecto que la sobrecarga (6) si |
(hasta C++11) |
|
Esta sobrecarga solo participa en la resolución de sobrecarga si |
(desde C++11) |
[cstr, cstr + count2).[cstr, cstr + Traits::length(cstr)).count2 copias del carácter ch.ilist.sv, convertida de t como si fuera mediante std::basic_string_view<CharT, Traits> sv = t;. Estas sobrecargas solo participan 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.[pos2, pos2 + count2) de una vista sobre cadena sv, convertida de t como si fuera mediante std::basic_string_view<CharT, Traits> sv = t;, excepto si count2==npos o si se extendiera más allá de sv.size(), se usa [pos2, 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.Contenido |
[editar] Parámetros
| pos | - | Inicio de la subcadena que se va a reemplazar. |
| count | - | Longitud de la subcadena que se va a reemplazar. |
| first, last | - | Rango de caracteres que se va a reemplazar |
| str | - | Cadena a usar para el reemplazo. |
| pos2 | - | Inicio de la subcadena con la cual reemplazar. |
| count2 | - | Número de caracteres con los cuales reemplazar. |
| cstr | - | Puntero a la cadena de caracteres a usar para el reemplazo. |
| ch | - | Valor de carácter a usar para el reemplazo. |
| first2, last2 | - | Rango de caracteres a usar para el reemplazo. |
| ilist | - | Lista de inicializadores a usar para el reemplazo. |
| t | - | Objeto (convertible a std::basic_string_view) con los caracteres a usar para el reemplazo. |
[editar] Valor de retorno
*this
[editar] Excepciones
std::out_of_range si pos > length() o pos2 > str.length()
std::length_error si la cadena resultante excediera la longitud máxima posible de la cadena (max_size()).
En cualquier caso, si se lanza una excepción por cualquier razón, esta función no tiene efecto (garantía de excepción fuerte). (desde C++11)
[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 causa ambigüedad en algunos casos.
|
Se evitó haciéndola una plantilla. |
[editar] Ejemplo
#include <iostream> #include <string> int main() { // Enunciado que contiene todas las letras del alfabeto en inglés std::string str("The quick brown fox jumps over the lazy dog."); str.replace(10, 5, "red"); // (5) str.replace(str.begin(), str.begin() + 3, 1, 'A'); // (6) std::cout << str << '\n'; }
Salida:
A quick red fox jumps over the lazy dog.