Espacios de nombres
Variantes
Acciones

std::basic_string::replace

De cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
(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,

                       size_type pos2, size_type count2 );
(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)
(hasta C++20)
constexpr basic_string& replace( size_type pos, size_type count,

                                 const basic_string& str,

                                 size_type pos2, size_type count2 = npos );
(desde C++20)
(3)
template< class InputIt >

basic_string& replace( const_iterator first, const_iterator last,

                       InputIt first2, InputIt last2 );
(hasta C++20)
template< class InputIt >

constexpr basic_string& replace( const_iterator first, const_iterator last,

                                 InputIt first2, InputIt last2 );
(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,

                       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)
(8)
template < class T >

basic_string& replace( const_iterator first, const_iterator last,

                       const T& t );
(desde C++17)
(hasta C++20)
template < class T >

constexpr basic_string& replace( const_iterator first, const_iterator last,

                                 const T& t );
(desde C++20)
(9)
template < class T >

basic_string& replace( size_type pos, size_type count, const T& t,

                       size_type pos2, size_type count2 = npos );
(desde C++17)
(hasta C++20)
template < class T >

constexpr basic_string& replace( size_type pos, size_type count, const T& t,

                                 size_type pos2, size_type count2 = npos );
(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:

1) La cadena str.
2) La subcadena [pos2, pos2 + count2) de str, excepto si count2==npos o si se extendiera más allá de str.size(), se usa [pos2, str.size()).
3) Los caracteres en el rango [first2, last2).

Esta sobrecarga tiene el mismo efecto que la sobrecarga (6) si InputIt es un tipo entero.

(hasta C++11)

Esta sobrecarga solo participa en la resolución de sobrecarga si InputIt califica como un InputIterator.

(desde C++11)
4) Los caracteres en el rango [cstr, cstr + count2).
5) Los caracteres en el rango [cstr, cstr + Traits::length(cstr)).
6) count2 copias del carácter ch.
7) Los caracteres en la lista de inicializadores ilist.
8) Los caracteres de una vista sobre cadena 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.
9) La subvista [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.