std::basic_string<CharT,Traits,Allocator>:: erase
From cppreference.net
<
cpp
|
string
|
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.
2)
Elimina el carácter en la
position
.
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
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
Ejecutar este código
#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) |