Supprimer le premier caractère de la string en C++
Cet article explique comment supprimer le premier caractère d'une string en C++.
1. Utilisation string::erase
La solution recommandée pour supprimer sur place des caractères d'une string consiste à utiliser le string::erase
fonction. Le programme C++ suivant illustre son utilisation à l'aide de la surcharge de plage :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> #include <string> int main() { std::string str = "ABCD"; str.erase(0, 1); std::cout << str << std::endl; // BCD return 0; } |
La string::erase
La fonction est également surchargée pour accepter un itérateur. L'itérateur doit pointer vers l'élément qui doit être supprimé de la string.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> #include <string> int main() { std::string str = "ABCD"; str.erase(str.begin()); std::cout << str << std::endl; // BCD return 0; } |
Il est recommandé de vérifier s'il y a une string vide avant d'invoquer le string::erase
fonction. Sinon, le code lance un std::length_error
exception pour une séquence d'entrée vide.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> #include <string> int main() { std::string str = "ABCD"; if (!str.empty()) { str.erase(str.begin()); } std::cout << str << std::endl; // BCD return 0; } |
Pour supprimer le premier caractère uniquement s'il correspond à un certain caractère, faites comme :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <string> int main() { std::string str = "ABCD"; char ch = 'A'; if (str.front() == ch) { str.erase(str.begin()); } std::cout << str << std::endl; // BCD return 0; } |
2. Utilisation string::substr
La string::erase
fonction in-place modifie la string. Pour obtenir une copie de la string d'origine avec son dernier caractère supprimé, utilisez la string::substr
fonction.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <string> int main() { std::string str = "ABCD"; std::string s; if (!str.empty()) { s = str.substr(1, str.size() - 1); } std::cout << s << std::endl; // BCD return 0; } |
Il s'agit de supprimer le premier caractère d'une string en C++.