Namespaces
Variants

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

From cppreference.net
std::basic_string
basic_string & erase ( size_type index = 0 , size_type count = npos ) ;
(1) (constexpr desde C++20)
(2)
iterator erase ( iterator position ) ;
(hasta C++11)
iterator erase ( const_iterator position ) ;
(desde C++11)
(constexpr desde C++20)
(3)
iterator erase ( iterator first, iterator last ) ;
(hasta C++11)
iterator erase ( const_iterator first, const_iterator last ) ;
(desde C++11)
(constexpr desde C++20)

Elimina los caracteres especificados de la cadena.

1) Elimina std:: min ( count, size ( ) - index ) caracteres comenzando en index .
2) Elimina el carácter en la position .
Si position no es un iterador dereferenciable en * this , el comportamiento es indefinido.
3) Elimina los caracteres en el rango [ first , last ) .
Si first o last no es un iterador válido en * this , o [ first , last ) no es un rango válido , el comportamiento es indefinido.

Contenidos

Parámetros

index - primer carácter a eliminar
count - número de caracteres a eliminar
position - iterador al carácter a eliminar
first, last - rango de los caracteres a eliminar

Valor de retorno

1) * this
2) Iterador que apunta al carácter inmediatamente siguiente al carácter borrado, o end() si no existe tal carácter.
3) Iterador que apunta al carácter last al que apuntaba antes del borrado, o end() si no existe dicho carácter.

Excepciones

1) std::out_of_range si index > size ( ) .
2,3) No lanza nada.

Si se lanza una excepción por cualquier razón, esta función no tiene efecto ( strong exception safety guarantee ).

Ejemplo

#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
int main()
{
    std::string s = "This Is An Example";
    std::cout << "1) " << s << '\n';
    s.erase(7, 3); // borra " An" usando la sobrecarga (1)
    std::cout << "2) " << s << '\n';
    s.erase(std::find(s.begin(), s.end(), ' ')); // borra el primer ' '; sobrecarga (2)
    std::cout << "3) " << s << '\n';
    s.erase(s.find(' ')); // recorta desde ' ' hasta el final del string; sobrecarga (1)
    std::cout << "4) " << s << '\n';
    auto it = std::next(s.begin(), s.find('s')); // obtiene un iterador al primer 's'
    s.erase(it, std::next(it, 2)); // borra "sI"; sobrecarga (3)
    std::cout << "5) " << s << '\n';
}

Salida:

1) This Is An Example
2) This Is Example
3) ThisIs Example
4) ThisIs
5) This

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 27 C++98 la sobrecarga ( 3 ) no borraba el carácter last apuntado, pero devolvía
el iterador apuntando al carácter inmediatamente siguiente a ese carácter
devuelve un iterador
apuntando a ese carácter
LWG 428 C++98 la sobrecarga ( 2 ) requería explícitamente que position fuera válida, pero
SequenceContainer requiere que sea desreferenciable (más estricto)
eliminó el
requisito explícito
LWG 847 C++98 no había garantía de seguridad de excepciones añadió garantía de seguridad
fuerte de excepciones

Véase también

borra el contenido
(función miembro pública)