Comment inverser une chaîne de caractères en C++
- Utiliser le String Constructor pour inverser une chaîne de caractères
-
Utilisez
std::reverse()
Algorithme pour inverser une chaîne -
Utilisez
std::copy()
Algorithme pour inverser une chaîne de caractères
Cet article explique comment inverser une chaîne de caractères en C++.
Utiliser le String Constructor pour inverser une chaîne de caractères
std::basic_string
a le constructeur, qui peut construire une chaîne avec le contenu de la plage. Nous pouvons alors déclarer une nouvelle variable de chaîne et alimenter son constructeur avec les itérateurs inverses de la variable de chaîne originale - tmp_s
. L’exemple suivant démontre cette méthode et produit les deux chaînes de caractères pour vérification.
#include <algorithm>
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::reverse;
using std::string;
int main() {
string tmp_s = "This string will be reversed";
cout << tmp_s << endl;
string tmp_s_reversed(tmp_s.rbegin(), tmp_s.rend());
cout << tmp_s_reversed << endl;
return EXIT_SUCCESS;
}
Production:
This string will be reversed
desrever eb lliw gnirts sihT
Utilisez std::reverse()
Algorithme pour inverser une chaîne
La méthode std::reverse
est issue de la bibliothèque <algorithm>
STL, et elle inverse l’ordre des éléments de la gamme. La méthode opère sur les objets passés en argument et ne retourne pas de nouvelle copie des données, nous devons donc déclarer une autre variable pour préserver la chaîne originale.
Notez que la fonction reverse
lance l’exception std::bad_alloc
si l’algorithme ne parvient pas à allouer de la mémoire.
#include <algorithm>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::reverse;
using std::string;
int main() {
string tmp_s = "This string will be reversed";
cout << tmp_s << endl;
string tmp_s_reversed(tmp_s);
reverse(tmp_s_reversed.begin(), tmp_s_reversed.end());
cout << tmp_s_reversed << endl;
return EXIT_SUCCESS;
}
Utilisez std::copy()
Algorithme pour inverser une chaîne de caractères
Le std::copy
est un autre algorithme puissant, qui peut être utilisé pour de multiples scénarios. Cette solution initialise une nouvelle variable de chaîne et modifie sa taille en utilisant la méthode intégrée de resize
. Ensuite, nous appelons la méthode copy
pour remplir la chaîne déclarée avec les données de la chaîne originale. Notez, cependant, que les deux premiers paramètres doivent être des itérateurs inverses de la plage source.
#include <algorithm>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::reverse;
using std::string;
int main() {
string tmp_s = "This string will be reversed";
cout << tmp_s << endl;
string tmp_s_reversed;
tmp_s_reversed.resize(tmp_s.size());
copy(tmp_s.rbegin(), tmp_s.rend(), tmp_s_reversed.begin());
cout << tmp_s_reversed << endl;
return EXIT_SUCCESS;
}
Dans le cas où les données de la chaîne inversée n’ont pas besoin d’être stockées, nous pouvons utiliser l’algorithme copy()
pour sortir directement les données de la chaîne dans l’ordre inverse vers la console comme le montre l’exemple de code suivant:
#include <algorithm>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::reverse;
using std::string;
int main() {
string tmp_s = "This string will be reversed";
cout << tmp_s << endl;
copy(tmp_s.rbegin(), tmp_s.rend(), std::ostream_iterator<char>(cout, ""));
return EXIT_SUCCESS;
}
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++