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
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 FacebookArtículo relacionado - C++ String
- Encuentre el primer carácter repetido en una cadena en C++
- Encuentre la subcadena común más larga en C++
- Poner en mayúscula la primera letra de una cadena en C++
- Comparación de cadenas y caracteres en C++
- Eliminar el último carácter de una cadena en C++
- Obtener el último carácter de una cadena en C++