Borrar cadena en C++

Jinku Hu 12 octubre 2023
Borrar cadena en C++

Este artículo demostrará cómo utilizar la función std::string::erase para eliminar un carácter de una cadena en C++.

Utilice la función std::string::erase para eliminar los caracteres especificados en la cadena

erase es una función miembro std::string que se puede utilizar para eliminar los caracteres dados de la cadena. Tiene tres sobrecargas, cada una de las cuales discutiremos en los siguientes ejemplos.

La primera sobrecarga acepta dos argumentos del tipo size_type que denotan el index y el count. Esta versión intentará borrar el número de caracteres de count que comienzan en la posición index, pero en algunos escenarios, puede que queden menos caracteres después del índice dado, por lo que se dice que la función elimina min(count, size() - index) caracteres. La primera sobrecarga de erase devuelve el valor *this.

Ambos parámetros tienen valores predeterminados, y cuando pasamos un solo valor de argumento a la función, el resultado puede ser un poco contradictorio. De hecho, el valor dado se interpreta como el parámetro index y se asume que el count es std::npos. En consecuencia, esto da como resultado que se borre el resto de la cadena después de la posición dada.

El siguiente fragmento de código muestra escenarios similares, uno que usa funciones miembro find y el otro, al pasar explícitamente el valor del índice.

#include <iostream>
#include <string>

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

int main() {
  string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";

  text.erase(0, 6);
  cout << text << endl;

  text.erase(text.find('c'));
  cout << text << endl;

  text.erase(2);
  cout << text << endl;

  return EXIT_SUCCESS;
}

Producción :

ipsum dolor sit amet, consectetur adipiscing elit.
ipsum dolor sit amet,
ip

La segunda sobrecarga de la función acepta un solo parámetro que representa la posición del personaje que se va a borrar. Este argumento debe ser del tipo de iterador correspondiente; de lo contrario, invocará la primera sobrecarga. Podemos utilizar esta versión de la función junto con el algoritmo std::find para eliminar la primera aparición del carácter dado de la cadena. De lo contrario, podemos pasar la posición relativa del carácter usando iteradores begin o end.

#include <iostream>
#include <string>

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

int main() {
  string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";

  text.erase(std::find(text.begin(), text.end(), ','));
  cout << text << endl;

  text.erase(text.end() - 5);
  cout << text << endl;

  return EXIT_SUCCESS;
}

Producción :

Lorem ipsum dolor sit amet consectetur adipiscing elit.
Lorem ipsum dolor sit amet consectetur adipiscing lit.

Finalmente, tenemos la tercera sobrecarga que toma dos iteradores como parámetros y elimina todos los caracteres en el rango correspondiente. El siguiente ejemplo de código muestra cómo podemos eliminar todos los caracteres de la cadena excepto el inicial.

#include <iostream>
#include <string>

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

int main() {
  string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";

  text.erase(text.begin() + 1, text.end());
  cout << text << endl;

  return EXIT_SUCCESS;
}

Producción :

L
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