Eliminar espacios de la cadena C ++

Eliminar espacios de la cadena C ++
Nuestros datos pueden contener espacios adicionales de vez en cuando, lo que puede causar problemas durante el análisis de datos. Cuando surge la necesidad, saber cómo eliminar espacios adicionales como pestañas, alimentos en línea y devoluciones de carro son útiles. Aquí hay varias explicaciones de por qué los espacios deben eliminarse de las cuerdas:
  • Espacios innecesarios al inicio, final e incluso en el centro
  • Tratando de averiguar cuántos caracteres hay en una cadena
  • Intentando organizar un conjunto de cuerdas
  • Cuando se comparan dos cuerdas
  • Agregar una URL a un sitio

Si nuestro código C ++ encuentra espacios mientras realiza cualquiera de estas operaciones anteriores, recibiremos resultados inesperados, como recuentos de caracteres incorrectos, listas clasificadas incorrectamente, comparaciones de cadenas inexactas y URL rotas. Por defecto, estos se consideran caracteres en espacios en blanco, yo.mi., "\ N", "\ t", "", "\ V", "\ r", "f".

A veces es importante eliminar el espacio de las cuerdas en la programación para evitar resultados inesperados. Aprenda cómo eliminar espacios de las cuerdas y cómo hacer frente a espacios adicionales con este artículo.

Ejemplo 1: Uso del método :: isspace para eliminar los espacios en blanco de la cadena en c++

Para extraer personajes de espacio blanco de std :: cadenas, el enfoque común es utilizar el método std :: eliminar si. El algoritmo std :: remove_if no elimina de manera efectiva los caracteres de la cadena, sino que mueve a todos los caracteres con los no blancos al frente y produce un iterador que se refiere al final. El método std :: remove_if requiere un predicado que decida qué caracteres borrar de la cadena.

El método ISSPACE () es el que se especifica en el encabezado CCTYPE y busca caracteres en blanco categorizados por la ubicación C instalada.

El siguiente ejemplo comienza desde la función principal. La declaración de cadena de la clase de cadena estándar se define en el método principal. La variable de cadena se define como "str" ​​y se inicializa con la cadena que contiene los caracteres en blanco. Para eliminar los espacios en blanco de la cadena, utilizamos el procedimiento de borrado normal.

Hemos usado el método std :: remove_if. En el método std :: remove_if, hemos pasado la función ":: isspace" en una búsqueda de un carácter de espacio blanco en una cadena dada. La cadena después de quitar los espacios en blanco se imprimirá en la siguiente pantalla:

#incluir
#incluir
#incluir
#incluir
int main ()

std :: string str = "c \ n \ nplusplus";
stri.borrar (std :: remove_if (str.begin (), str.end (), :: isspace), str.fin());
std :: cout<< "String:"<< str<<"\n";
regresar 0;

Como puede ver, no se encuentra ningún carácter de espacio en blanco en la siguiente cadena mostrada:

Ejemplo 2: Uso del método std :: isSpace para eliminar los espacios en blanco de la cadena en c++

En este ejemplo, utilizamos el método de enlace estándar para eliminar el espacio en blanco de la cadena llamando a la función std :: isSpace. En lugar de depender de la clasificación de los caracteres de espacio en blanco, podemos usar std :: isspace representado en el lugar de encabezado, donde el aspecto CType de la configuración regional especificada clasifica los caracteres en blanco.

Vinculación de una función con marcadores de posición le permite cambiar la posición y la cantidad de valores que la función utilizará, alterando la función en función del resultado deseado.

La cadena se define como "str_n" en la principal y se inicializa con la palabra de cadena que tiene caracteres de espacio blanco entre ellos. Aquí, hemos invocado el método ERASE para la cadena "str_n" donde se usan dos funciones std :: remove_if y el std :: bind. Tenga en cuenta que hemos usado std :: isspace en la función de enlace para encontrar espacios en blanco en la cadena; Luego, el método ERASE eliminará el espacio en blanco de la cadena y devolverá una nueva cadena de resultados.

#incluir
#incluir
#incluir
#incluir
#incluir
int main ()

std :: string str_n = "white \ n \ nspaces";
str_n.borrar (std :: remove_if (str_n.comenzar(),
str_n.fin(),
std :: bind (std :: isspace,
std :: marcadores de posición :: _ 1,
std :: locale :: clásico ()
)),
str_n.fin());
std :: cout<< "String:"<regresar 0;

Al compilar el programa anterior, el shell muestra los caracteres no whitespace.

Ejemplo 3: Uso del método unario para eliminar los espacios en blanco de la cadena en C++

En lugar de usar :: isspace o std :: isspace, podemos crear una condición personalizada que devuelva verdaderas si el personaje es un carácter de espacio en blanco o de lo contrario falso. Hemos creado nuestro método unario para eliminar los caracteres en blanco de la cadena.

Hemos creado un método unario "myfunction" de tipo de datos bool. La función ha pasado con el argumento de la variable de char sin firmar "MyChar". Dentro de la función, tenemos una condición de retorno que devuelve el carácter Whitespace especificado si se encuentra en la cadena.

Luego, tenemos la función principal donde la cadena se genera como "mystring" y contiene los caracteres de la cadena con caracteres en blanco. El método ERASE se usa en adelante en la Declaración de cadenas donde Remete_IF y la función "MyFunction" se llama borrar los personajes de Whitespace.

#incluir
#incluir
#incluir
bool myfunction (unsigned char mychar)
return (mychar == "|| mychar == '\ n' || mychar == '\ r' ||
Mychar == '\ t' || Mychar == '\ V' || Mychar == '\ f');

int main ()

std :: string myString = "mc \ n \ ndonald";
Mystring.borrar (std :: remove_if (mystring.begin (), mystring.end (), myfunction), mystring.fin());
std :: cout<< "String:" <regresar 0;

La cadena resultante tiene todos los caracteres no blancos que se muestran en la siguiente pantalla de shell:

Ejemplo 5: usando el método regex para eliminar los espacios en blanco de la cadena en c++

El método REGEX reemplazar () reemplaza un patrón de expresión regular con una cadena que contiene caracteres en blanco. Discutamos con la demostración de ejemplo.

El programa C ++ incluye un archivo regex en la sección de encabezado para acceder a la función regex_replace en el programa. Se define el int Main, que tiene una representación de cadena integral con los caracteres en blanco en una variable de cadena "Stringis". Luego, hemos llamado a la función regex en una representación de regex varada y pasamos la variable de cadena "stringis" con el operador "+". La función REGEX_REPLACE se llama a través de la cadena variable "Stringis" para borrar los espacios en blanco o los caracteres en blanco de la cadena dada:

#incluir
#incluir
#incluir
int main ()

std :: string stringis = "1 \ n \ n2 \ n \ n3 \ n \ n4 \ n \ n5";
std :: regex regx ("\\ stringis+");
Stringis = std :: regex_replace (stringis, regx, "");
std :: cout<regresar 0;

El reemplazo de regex elimina los caracteres en blanco de la cadena entera, que se imprime en el shell de comando de Ubuntu.

Conclusión

Por lo tanto, podemos eliminar los caracteres en blanco de la cadena en C ++ a través de varios métodos discutidos en este artículo. Tenemos todas las demostraciones de estos ejemplos con el resultado resultante del programa. Tiene un número suficiente de métodos para reemplazar o eliminar espacios blancos de cadenas C ++. Elija cualquier método que lo atraiga mientras sea apropiado para la situación.