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.