Cómo reemplazar una parte de la cadena en C++

Jinku Hu 12 octubre 2023
  1. Usa el método replace() para reemplazar parte de la cadena en C++
  2. Usar la función personalizada para reemplazar parte de la cadena en C++
  3. Use el método regex_replace() para reemplazar parte de la cadena en C++
Cómo reemplazar una parte de la cadena en C++

Este artículo demuestra múltiples métodos sobre cómo se puede reemplazar una parte de la cadena en C++.

Usa el método replace() para reemplazar parte de la cadena en C++

replace es el método incorporado de la clase std::string y proporciona la característica exacta de reemplazar una parte dada del objeto string. El primer parámetro de la función indica el carácter inicial donde se inserta la cadena dada. El siguiente parámetro especifica la longitud de la subcadena que debe ser reemplazada por una nueva cadena. Finalmente, la nueva cadena se pasa como tercer argumento. Nótese que el método replace modifica el objeto de la cadena al que se llama.

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

Resultado:

Order $_
Order #1190921

Usar la función personalizada para reemplazar parte de la cadena en C++

Alternativamente, puede construir una función personalizada que devuelva un objeto de cadena modificado separado en lugar de hacer el reemplazo en los lugares. La función toma 3 referencias a las variables string: la primera cadena es para modificar, la segunda subcadena es para reemplazar, y la tercera cadena es para insertar. Aquí, puedes notar que la función devuelve la cadena construida por el valor ya que tiene semántica de movimiento.

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

Resultado:

Order $_
Order #1190921

Use el método regex_replace() para reemplazar parte de la cadena en C++

Otro método útil que puedes usar para resolver este problema es utilizar regex_replace; es parte de la librería de expresiones regulares STL, que está definida en la cabecera <regex>. Este método utiliza regex para hacer coincidir los caracteres de una cadena dada y reemplazar la secuencia con una cadena pasada. En el siguiente ejemplo, regex_replace construye un nuevo objeto de cadena.

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

Resultado:

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

Artículo relacionado - C++ String