Sostituisci una parte della stringa in C++

Jinku Hu 12 ottobre 2023
  1. Usa il metodo replace() per sostituire parte della stringa in C++
  2. Usa la funzione personalizzata per sostituire parte della stringa in C++
  3. Usa il metodo regex_replace() per sostituire parte della stringa in C++
Sostituisci una parte della stringa in C++

In questo articolo vengono illustrati diversi metodi per sostituire una parte della stringa in C++.

Usa il metodo replace() per sostituire parte della stringa in C++

replace è il metodo integrato della classe std::string e fornisce la caratteristica esatta di sostituire una data parte dell’oggetto stringa. Il primo parametro della funzione indica il carattere iniziale in cui è inserita la stringa data. Il parametro successivo specifica la lunghezza della sottostringa che deve essere sostituita da una nuova stringa. Infine, la nuova stringa viene passata come terzo argomento. Notare che, il metodo replace modifica l’oggetto stringa su cui viene chiamato.

#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;
}

Produzione:

Order $_
Order #1190921

Usa la funzione personalizzata per sostituire parte della stringa in C++

In alternativa, puoi costruire una funzione personalizzata che restituisca un oggetto stringa modificato separato invece di eseguire la sostituzione sul posto. La funzione accetta 3 riferimenti a variabili stringa: la prima stringa è per la modifica, la seconda sottostringa è per la sostituzione e la terza stringa è per l’inserimento. Qui, puoi notare che la funzione restituisce una stringa costruita in base al valore poiché ha la semantica dello spostamento.

#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;
}

Produzione:

Order $_
Order #1190921

Usa il metodo regex_replace() per sostituire parte della stringa in C++

Un altro metodo utile che puoi usare per risolvere questo problema è utilizzare regex_replace; fa parte della libreria delle espressioni regolari STL, che è definita nell’intestazione <regex>. Questo metodo usa regex per abbinare i caratteri in una data stringa e sostituire la sequenza con una stringa passata. Nell’esempio seguente, regex_replace costruisce un nuovo oggetto stringa.

#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;
}

Produzione:

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

Articolo correlato - C++ String