Eliminar la puntuación de la cadena C ++

Eliminar la puntuación de la cadena C ++
Al trabajar en proyectos C ++, tenemos que eliminar los caracteres de puntuación para que nuestro código sea legible y claro. Puede tener la intención de borrar caracteres o símbolos de puntuación de un número de cadena ingresado por un usuario en su programa para convertirlo en un entero, ya que la puntuación es poderosa. Tienen el poder de alterar completamente el significado de la oración. Teniendo en cuenta que C ++ ha creado una guía detallada sobre cómo eliminar los símbolos de puntuación de una cadena.

Hay algunos métodos para eliminar los símbolos de puntuación de una cadena en C++. En este artículo, pasaremos por cómo eliminar los signos de puntuación de una cadena utilizando diferentes métodos en C++.

Ejemplo 1: programa de método de estilo C para eliminar la puntuación en C++

Esta implementación elimina todos los símbolos, excepto los alfabetos de una cadena utilizando el método de cadena de estilo C ingresado por el usuario.

Primero, tenemos el método principal del programa. En general, tenemos una matriz de char como "strline" y establecemos el límite de la matriz de char a "50". Además, hemos definido otra matriz de char, "Charstring" del límite "50". Luego, una variable "int" como "n" y la inicializa con el cero. El comando cout imprimirá la declaración "ingresar una cadena" para un usuario. A través del Cin.GetLine Offing, el usuario ingresará a la cadena. La cadena ingresada por el usuario se verificará en la condición for bucle for bucle, que verificará si el carácter "strline" no está al final de la cadena.

Luego, la instrucción si ejecutará la condición de que la cadena ingresada tiene el alfabeto en minúsculas y mayúsculas y verificará si la cadena tiene solo caracteres o no. Hemos inicializado la matriz de "chartring" con los caracteres cero sobre los que el programa termina como la cadena tiene su valor final de cero caracteres.

#incluir
usando el espacio de nombres STD;
int main ()
char strline [50], Charstring [50];
int n = 0;
cout<= 'a' &&StrLine[i]= 'A' &&StrLine[i]<='Z'))

Charstring [n ++] = strline [i];


Charstring [n] = '\ 0';
cout<< "Resultant String: " <regresar 0;

La cadena ingresada por el usuario tiene algunos caracteres de puntuación, que se eliminan en la cadena resultante por el método de estilo C.

Ejemplo 2: programa de usar el método std :: remove_if para eliminar la puntuación en c++

Una opción simple para eliminar la puntuación de una cadena es utilizar el algoritmo estándar "std :: remove_if" con la función de miembro de la cadena :: borrar. Como el algoritmo "std :: remove_if" no tiene acceso al contenedor de cadena, solo puede eliminar los signos de puntuación en la cadena. Emite un iterador que indica dónde debe estar la terminación, que se puede eliminar utilizando el método STD :: ERASE.

El método principal de este programa tiene una forma de clase de cadena estándar de declarar una cadena como "myString" e inicializarla con la cadena que contiene algún carácter de puntuación. Luego, tenemos una variable de tipo "automática" como "eliminar", utilizamos el método std :: remove_if. En el método, tenemos una función begin () para el iterador de los primeros caracteres de la cadena y el extremo () para el último iterador de caracteres para la cadena "myString". Tenemos una matriz char const de variable de referencia "s". Crea una copia de cada personaje.

El ispunct () se llama luego para verificar que la matriz que contiene elementos es carácter. Después de ese método de borrado, que elimina la puntuación de la cadena hasta el último carácter de la cadena.

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

std :: string mystring = "Él!@|| ll@o.++| ";
Auto remoje = std :: remove_if (myString.begin (), mystring.fin(), []
(Char Const & S)

return std :: ispunct (s);
);
Mystring.borrar (eliminar, mystring.fin());
std :: cout<regresar 0;

La cadena que se muestra en la imagen no tiene símbolo de puntuación; Solo se devuelve la cadena con los caracteres.

Ejemplo 3: programa de usar un bucle inverso para eliminar la puntuación en c++

Alternativamente, podemos usar un bucle convencional para localizar puntuaciones en la cadena dada y borrarlas con el método String :: Borrar. El bucle debe estar en orden inverso para evitar el rendimiento no determinista mientras se elimina los componentes durante la iteración.

La cadena se define con el nombre "String_str" como en una clase estándar de cadena, y la cadena contiene la cadena con algunos caracteres del alfabeto y algunos símbolos de puntuación. Después de la declaración de cadena, tenemos un bucle for que iterará sobre cada carácter de cadena en orden invertido. Luego, tenemos una función ispúntica que verifica los caracteres de puntuación en la cadena especificada en la condición IF. Si se encuentra algún carácter de puntuación, se borrará en la función de borrado.

#incluir
#incluir
#incluir
int main ()

std :: string string_str = "c '| plus [pluspro@gr @@^a & mm!-En g";
para (int i = string_str.tamaño () - 1; i> = 0; i--)
if (ispunct (string_str [i]))
String_str.borrar (i, 1);


std :: cout<< "String :" <regresar 0;

La cadena resultante no tiene carácter de puntuación, como se muestra en la siguiente imagen.

Ejemplo 4: programa utilizando una función personalizada para eliminar la puntuación en c++

Alternativamente, el procedimiento anterior se puede mover a una función separada, que genera una copia local de la cadena y opera en ella, devolviendo el valor formateado al código original. La función personalizada se utiliza para mejorar la funcionalidad para habilitar distintos conjuntos de caracteres o incluso para pasar la función de criterio personalizado para el tercer parámetro del algoritmo remove_if.

Tenemos la definición de función como "removerpunteation" en el siguiente programa y pasamos la referencia de cadena "STR" como parámetro. En la función, tenemos "temperatura" como una función a la que pasamos "STR. Luego, tenemos una función de borrado llamando a la función std :: remove_if en ella.

Después de eso, tenemos el método principal donde hemos definido e inicializado una cadena "contenido". Además, la función invocó la función especificada anteriormente "Remouspuntuation" aquí a la que se pasa la cadena "Contenido". La cadena analizada se imprimirá después de eliminar los símbolos de puntuación.

#incluir
#incluir
#incluir
#incluir
usando std :: cout; usando std :: cin;
usando std :: endl; usando std :: string;
String RemoLEpunctuation (const string & str)
TEMP (STR);
temperatura.borrar (std :: remove_if (temp.begin (), temperatura.end (), ispunct), temperatura.fin());
regresar temp;

int main ()
String Content = "Have | ,! a @@^() g ^^ o!OD D@++ ay |?";
cout<< "string content:" << content <cadena format_content = removePunctuation (contenido);
cout<< "Parsed string :" <regresar 0;

La cadena con caracteres de puntuación y la cadena sin los caracteres de puntuación se muestran aquí en la pantalla de salida.

Conclusión

En resumen, hemos cubierto múltiples formas en C ++ para eliminar los caracteres de puntuación de una cadena. Puede usar los cuatro métodos discutidos anteriormente para eliminar todos los caracteres de puntuación de una cadena. Estos métodos le dan una cadena de puntuación de filtro en c++. Al leer el artículo, puede descubrir cuál de estos enfoques es más conveniente.