Comment marquer une chaîne de caractères en C++
-
Utiliser les fonctions
find
etsubstr
pour marquer une chaîne en C++ -
Utilisez les fonctions
std::stringstream
etgetline
pour marquer une chaîne en C++ -
Utiliser l’algorithme
istringstream
etcopy
pour marquer une chaîne en C++
Cet article explique plusieurs méthodes de tokenisation d’une chaîne de caractères en C++.
Utiliser les fonctions find
et substr
pour marquer une chaîne en C++
La classe std::string
a une fonction find
intégrée pour rechercher une séquence de caractères dans un objet chaîne donné. La fonction find
retourne la position du premier caractère trouvé dans la chaîne et retourne npos
si elle n’est pas trouvée. L’appel de la fonction find
est inséré dans l’instruction if
pour itérer sur la chaîne jusqu’à ce que le dernier caractère soit extrait.
Notez qu’un utilisateur peut spécifier n’importe quel délimiteur de type string
et le passer à la méthode find
. Les jetons sont poussés vers le vector
des chaînes et la partie déjà traitée est supprimée avec la fonction erase()
à chaque itération.
#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
string text = "Think you are escaping and run into yourself.";
int main() {
string delim = " ";
vector<string> words{};
size_t pos = 0;
while ((pos = text.find(delim)) != string::npos) {
words.push_back(text.substr(0, pos));
text.erase(0, pos + delim.length());
}
if (!text.empty()) words.push_back(text.substr(0, pos));
for (const auto &str : words) {
cout << str << endl;
}
return EXIT_SUCCESS;
}
Production :
Think
you
are
escaping
and
run
into
yourself.
Utilisez les fonctions std::stringstream
et getline
pour marquer une chaîne en C++
Le stringstream
peut être utilisé pour ingérer une chaîne à traiter et utiliser getline
pour extraire des jetons jusqu’à ce que le délimiteur donné soit trouvé. Notez que cette méthode ne fonctionne qu’avec des délimiteurs à un seul caractère.
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::istringstream;
using std::string;
using std::stringstream;
using std::vector;
int main() {
string text = "Think you are escaping and run into yourself.";
char del = ' ';
vector<string> words{};
stringstream sstream(text);
string word;
while (std::getline(sstream, word, del)) words.push_back(word);
for (const auto &str : words) {
cout << str << endl;
}
return EXIT_SUCCESS;
}
Production :
Think
you
are
escaping
and
run
into
yourself.
Utiliser l’algorithme istringstream
et copy
pour marquer une chaîne en C++
On peut aussi utiliser la fonction copy
de l’en-tête <algorithm>
et extraire des chaînes de caractères sur les délimiteurs d’espace blanc. Dans l’exemple suivant, nous ne faisons qu’itérer et diffuser des jetons vers la sortie standard. Pour traiter la chaîne avec la méthode copy
, nous l’insérons dans istringstream
et utilisons ses itérateurs.
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::istringstream;
using std::string;
using std::stringstream;
using std::vector;
int main() {
string text = "Think you are escaping and run into yourself.";
string delim = " ";
vector<string> words{};
istringstream iss(text);
copy(std::istream_iterator<string>(iss), std::istream_iterator<string>(),
std::ostream_iterator<string>(cout, "\n"));
return EXIT_SUCCESS;
}
Production :
Think
you
are
escaping
and
run
into
yourself.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookArticle connexe - C++ String
- Comparaison de chaîne et de caractère en C++
- Supprimer le dernier caractère d'une chaîne en C++
- Obtenir le dernier caractère d'une chaîne en C++
- Différences entre l'opérateur sizeof et la fonction strlen pour les chaînes en C++
- Effacer la chaîne en C++
- Imprimer toutes les permutations de la chaîne en C++