Comment remplacer une partie de la chaîne en C++

Jinku Hu 12 octobre 2023
  1. Utilisez la méthode replace() pour remplacer une partie de la chaîne en C++
  2. Utiliser une fonction personnalisée pour remplacer une partie de la chaîne en C++
  3. Utilisez la méthode regex_replace() pour remplacer une partie de la chaîne en C++
Comment remplacer une partie de la chaîne en C++

Cet article présente plusieurs méthodes pour remplacer une partie de la chaîne de caractères en C++.

Utilisez la méthode replace() pour remplacer une partie de la chaîne en C++

Replace est la méthode de construction de la classe std::string et fournit la caractéristique exacte de remplacement d’une partie donnée de l’objet chaîne. Le premier paramètre de la fonction indique le caractère de départ où la chaîne donnée est insérée. Le paramètre suivant spécifie la longueur de la sous-chaîne qui doit être remplacée par une nouvelle chaîne de caractères. Enfin, la nouvelle chaîne est passée comme troisième argument. Notez que la méthode replace modifie l’objet chaîne de caractères sur lequel il est appelé.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string input = "Order $_";
  string order = "#1190921";

  cout << input << endl;

  input.replace(input.find("$_"), 2, order);

  cout << input << endl;

  return EXIT_SUCCESS;
}

Production:

Order $_
Order #1190921

Utiliser une fonction personnalisée pour remplacer une partie de la chaîne en C++

Vous pouvez aussi construire une fonction personnalisée qui retourne un objet chaîne modifié séparé au lieu de faire le remplacement sur place. La fonction prend 3 références aux variables string : la première chaîne est pour la modification, la deuxième sous-chaîne est pour le remplacement et la troisième chaîne est pour l’insertion. Ici, vous pouvez remarquer que la fonction retourne la chaîne construite par la valeur puisqu’elle a une sémantique de déplacement.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

string Replace(string& str, const string& sub, const string& mod) {
  string tmp(str);
  tmp.replace(tmp.find(sub), mod.length(), mod);
  return tmp;
}

int main() {
  string input = "Order $_";
  string order = "#1190921";

  cout << input << endl;

  string output = Replace(input, "$_", order);

  cout << output << endl;

  return EXIT_SUCCESS;
}

Production:

Order $_
Order #1190921

Utilisez la méthode regex_replace() pour remplacer une partie de la chaîne en C++

Une autre méthode utile que vous pouvez utiliser pour résoudre ce problème est l’utilisation de regex_replace ; cela fait partie de la bibliothèque d’expressions régulières STL, qui est définie dans l’en-tête <regex>. Cette méthode utilise regex pour faire correspondre les caractères d’une chaîne donnée et remplacer la séquence par une chaîne passée. Dans l’exemple suivant, regex_replace construit un nouvel objet chaîne de caractères.

#include <iostream>
#include <regex>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::regex;
using std::regex_replace;
using std::string;

int main() {
  string input = "Order $_";
  string order = "#1190921";

  cout << input << endl;

  string output = regex_replace(input, regex("\\$_"), order);

  cout << output << endl;

  return EXIT_SUCCESS;
}

Production:

Order $_
Order #1190921
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