Namespaces
Variants

std::basic_string<CharT,Traits,Allocator>::replace

De es.cppreference.net
 
 
 
std::basic_string
 
basic_string& replace( size_type pos, size_type count,
                       const basic_string& str );
(1) (constexpr desde C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       const basic_string& str );
(2) (constexpr desde C++20)
basic_string& replace( size_type pos, size_type count,
                       const basic_string& str,
                       size_type pos2, size_type count2 );
(3) (hasta C++14)
basic_string& replace( size_type pos, size_type count,
                       const basic_string& str,
                       size_type pos2, size_type count2 = npos );
(desde C++14)
(constexpr desde C++20)
basic_string& replace( size_type pos, size_type count,
                       const CharT* cstr, size_type count2 );
(4) (constexpr desde C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       const CharT* cstr, size_type count2 );
(5) (constexpr desde C++20)
basic_string& replace( size_type pos, size_type count,
                       const CharT* cstr );
(6) (constexpr desde C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       const CharT* cstr );
(7) (constexpr desde C++20)
basic_string& replace( size_type pos, size_type count,
                       size_type count2, CharT ch );
(8) (constexpr desde C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       size_type count2, CharT ch );
(9) (constexpr desde C++20)
template< class InputIt >
basic_string& replace( const_iterator first, const_iterator last,
                       InputIt first2, InputIt last2 );
(10) (constexpr desde C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       std::initializer_list<CharT> ilist );
(11) (desde C++11)
(constexpr desde C++20)
template< class StringViewLike >
basic_string& replace( size_type pos, size_type count,
                       const StringViewLike& t );
(12) (desde C++17)
(constexpr desde C++20)
template< class StringViewLike >
basic_string& replace( const_iterator first, const_iterator last,
                       const StringViewLike& t );
(13) (desde C++17)
(constexpr desde C++20)
template< class StringViewLike >
basic_string& replace( size_type pos, size_type count,
                       const StringViewLike& t,
                       size_type pos2, size_type count2 = npos );
(14) (desde C++17)
(constexpr desde C++20)

Reemplaza los caracteres en el rango [begin() + pos, begin() + std::min(pos + count, size())) o [first, last) con los caracteres dados.

1,2) Esos caracteres se reemplazan con str.
3) Esos caracteres se reemplazan con una subcadena [pos2, std::min(pos2 + count2, str.size())) de str.
4,5) Esos caracteres se reemplazan con los caracteres en el rango [cstr, cstr + count2).
Si [cstr, cstr + count2) no es un rango válido, el comportamiento no está definido.
6,7) Esos caracteres se reemplazan con los caracteres en el rango [cstr, cstr + Traits::length(cstr)).
8,9) Esos caracteres se reemplazan con count2 copias de ch.
10) Esos caracteres se reemplazan con los caracteres en el rango [first2, last2) como si fuera por replace(first, last, basic_string(first2, last2, get_allocator())).
11) Esos caracteres se reemplazan con los caracteres en ilist.
12,13) Convierte implícitamente t a una vista de cadena sv como si fuera por std::basic_string_view<CharT, Traits> sv = t;, luego esos caracteres se reemplazan con los caracteres de sv.
Estas sobrecargas participan en la resolución de sobrecargas 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.
14) Convierte implícitamente t a una vista de cadena sv como si fuera por std::basic_string_view<CharT, Traits> sv = t;, luego esos caracteres se reemplazan con los caracteres de la subvista sv.substr(pos2, count2).
Esta sobrecarga participa en la resolución de sobrecargas 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.

Si [begin(), first) o [first, last) no es un rango válido, el comportamiento no está definido.

Parámetros

pos - inicio de la subcadena que será reemplazada
count - longitud de la subcadena que será reemplazada
first, last - rango de caracteres que será reemplazado
str - cadena a utilizar para el reemplazo
pos2 - inicio de la subcadena con la que reemplazar
count2 - número de caracteres con los que reemplazar
cstr - puntero a la cadena de caracteres a utilizar para el reemplazo
ch - valor de carácter a utilizar para el reemplazo
first2, last2 - rango de caracteres a utilizar para el reemplazo
ilist - lista de inicialización con los caracteres a utilizar para el reemplazo
t - objeto (convertible a std::basic_string_view ) con los caracteres a utilizar para el reemplazo
Requisitos de tipo
-
InputIt debe cumplir con los requisitos de LegacyInputIterator .

Valor de retorno

* this .

Excepciones

1) Lanza std::out_of_range si pos > size ( ) .
3) Lanza std::out_of_range si pos > size ( ) o pos2 > str. size ( ) .
4,6,8) Lanza std::out_of_range si pos > size ( ) .
12,14) Lanza std::out_of_range si pos > size ( ) .

Si la operación causara que size() exceda max_size() , lanza std::length_error .

Si se lanza una excepción por cualquier razón, estas funciones no tienen efecto ( strong exception safety guarantee ).

Ejemplo

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 de seguridad fuerte de excepciones
LWG 1323 C++98 los tipos de first y last eran iterator cambiados a const_iterator
LWG 2946 C++17 las sobrecargas (12,13) causaban ambigüedad en algunos casos evitado al convertirlas en plantillas

Véase también

reemplaza la porción especificada de una cadena con un rango de caracteres
(función miembro pública)
reemplaza apariciones de una expresión regular con texto de reemplazo formateado
(plantilla de función)
reemplaza todos los valores que satisfacen criterios específicos con otro valor
(plantilla de función & objeto de función de algoritmo)