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 depuis C++20) |
| (2) | ||
|
iterator erase
(
iterator position
)
;
|
(jusqu'à C++11) | |
|
iterator erase
(
const_iterator position
)
;
|
(depuis C++11)
(constexpr depuis C++20) |
|
| (3) | ||
|
iterator erase
(
iterator first, iterator last
)
;
|
(jusqu'à C++11) | |
|
iterator erase
(
const_iterator first, const_iterator last
)
;
|
(depuis C++11)
(constexpr depuis C++20) |
|
Supprime les caractères spécifiés de la chaîne.
2)
Supprime le caractère à la
position
.
3)
Supprime les caractères dans la plage
[
first
,
last
)
.
Si
first
ou
last
n'est pas un
itérateur valide
sur
*
this
, ou si
[
first
,
last
)
n'est pas une
plage valide
, le comportement est indéfini.
Table des matières |
Paramètres
| index | - | premier caractère à supprimer |
| count | - | nombre de caractères à supprimer |
| position | - | itérateur vers le caractère à supprimer |
| first, last | - | plage des caractères à supprimer |
Valeur de retour
1)
*
this
2)
Itérateur pointant vers le caractère immédiatement suivant le caractère effacé, ou
end()
si aucun caractère de ce type n'existe.
3)
Itérateur pointant vers le caractère
last
pointé avant l'effacement, ou
end()
si aucun tel caractère n'existe.
Exceptions
2,3)
Ne lance rien.
Si une exception est levée pour quelque raison que ce soit, cette fonction n'a aucun effet ( garantie forte de sûreté face aux exceptions ).
Exemple
Exécuter ce code
#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); // efface " An" en utilisant la surcharge (1) std::cout << "2) " << s << '\n'; s.erase(std::find(s.begin(), s.end(), ' ')); // efface le premier ' '; surcharge (2) std::cout << "3) " << s << '\n'; s.erase(s.find(' ')); // tronque à partir de ' ' jusqu'à la fin de la chaîne; surcharge (1) std::cout << "4) " << s << '\n'; auto it = std::next(s.begin(), s.find('s')); // obtient un itérateur vers le premier 's' s.erase(it, std::next(it, 2)); // efface "sI"; surcharge (3) std::cout << "5) " << s << '\n'; }
Sortie :
1) This Is An Example 2) This Is Example 3) ThisIs Example 4) ThisIs 5) This
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 27 | C++98 |
la surcharge
(
3
)
n'effaçait pas le caractère
last
pointé, mais elle retournait
l'itérateur pointant vers le caractère immédiatement suivant ce caractère |
retourne un itérateur
pointant vers ce caractère |
| LWG 428 | C++98 |
la surcharge
(
2
)
exigeait explicitement que
position
soit valide, mais
SequenceContainer l'exige déréférençable (plus strict) |
supprimé l'exigence
explicite |
| LWG 847 | C++98 | il n'y avait aucune garantie de sécurité des exceptions |
ajouté une garantie de sécurité
forte des exceptions |
Voir aussi
|
efface le contenu
(fonction membre publique) |