Comment inverser une chaîne de caractères en C++

Jinku Hu 12 octobre 2023
  1. Utiliser le String Constructor pour inverser une chaîne de caractères
  2. Utilisez std::reverse() Algorithme pour inverser une chaîne
  3. Utilisez std::copy() Algorithme pour inverser une chaîne de caractères
Comment inverser une chaîne de caractères en C++

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;
}
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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 Facebook

Article connexe - C++ String