Supprimer la ponctuation de la chaîne C ++

Supprimer la ponctuation de la chaîne C ++
Lorsque vous travaillez sur des projets C ++, nous devons supprimer les caractères de ponctuation pour rendre notre code lisible et clair. Vous pouvez avoir l'intention d'effacer les caractères ou symboles de ponctuation d'un numéro de chaîne entré par un utilisateur dans votre programme pour le convertir en un entier, car la ponctuation est puissante. Ils ont le pouvoir de modifier complètement la signification de la phrase. Considérant que C ++ a créé un guide détaillé sur la suppression des symboles de ponctuation d'une chaîne.

Il existe quelques méthodes pour éliminer les symboles de ponctuation d'une chaîne en C++. Dans cet article, nous allons suivre comment supprimer les marques de ponctuation d'une chaîne en utilisant différentes méthodes en C++.

Exemple 1: Programme de méthode de style C pour supprimer la ponctuation en C++

Cette implémentation élimine tous les symboles à l'exception des alphabets d'une chaîne en utilisant la méthode de chaîne de style C entrée par l'utilisateur.

Tout d'abord, nous avons la méthode principale du programme. Dans l'ensemble, nous avons un tableau char comme «Strline» et fixé la limite du tableau char à «50». De plus, nous avons défini un autre tableau char, «Charstring» de limite «50». Ensuite, une variable «int» en tant que «n» et l'initialise avec le zéro. La commande cout imprimera l'instruction «saisir une chaîne» pour un utilisateur. À travers le Cin.approche getline, l'utilisateur entrera la chaîne. La chaîne entrée par l'utilisateur sera vérifiée dans la condition de boucle pour vérifier si le caractère «Strline» n'est pas à la fin de la chaîne.

Ensuite, l'instruction IF exécutera la condition que la chaîne entrée a l'alphabet minuscule et majuscules et vérifie si la chaîne a juste des caractères ou non. Nous avons initialisé le tableau «Charstring» avec les caractères zéro sur lesquels le programme s'est terminé car la chaîne a sa valeur finale de caractères zéro.

#inclure
Utilisation de Namespace Std;
int main()
Char Strline [50], Charstring [50];
int n = 0;
couter<= 'a' &&StrLine[i]= 'A' &&StrLine[i]<='Z'))

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


Charstring [n] = '\ 0';
couter<< "Resultant String: " <retour 0;

La chaîne entrée par l'utilisateur a des caractères de ponctuation, qui sont supprimés dans la chaîne résultante par la méthode de style C.

Exemple 2: Programme d'utilisation de la méthode STD :: REPOUV_IF pour supprimer la ponctuation en C++

Une option simple pour supprimer la ponctuation d'une chaîne consiste à utiliser l'algorithme standard «std :: retire_if» avec la chaîne :: Effacer la fonction membre. Comme l'algorithme «STD :: REPOUR_IF» n'a pas accès au conteneur de chaîne, il ne peut supprimer que les marques de ponctuation dans la chaîne. Il sort un itérateur indiquant où la terminaison doit être, qui peut être supprimée à l'aide de la méthode Effacement STD ::.

La méthode principale de ce programme a une manière standard de classe de chaîne de déclarer une chaîne comme «mystring» et l'initialiser avec la chaîne contenant un caractère de ponctuation. Ensuite, nous avons une variable de type «auto» en tant que «supprimer», nous avons utilisé la méthode std :: supprime_if. Dans la méthode, nous avons une fonction Begin () pour les premiers caractères Itérator de la chaîne et la fin () pour les derniers caractères Itérator pour la chaîne "MyString". Nous avons une constante constante de référence «S». Il crée une copie de chaque personnage.

L'Ispunct () est ensuite appelé pour vérifier le caractère contenant des éléments contenant le tableau. Après cette méthode d'effacement, qui supprime la ponctuation de la chaîne jusqu'au dernier caractère de la chaîne.

#inclure
#inclure
#inclure
#inclure
int main()

std :: string mystring = "he!@ || ll @ o.++| ";
Auto retire = std :: retire_if (MyString.begin (), mystring.fin(), []
(Char Const & s)

retourner std :: ispunct (s);
);
MyString.Effacer (supprimer, mystring.fin());
std :: cout<retour 0;

La chaîne indiquée dans l'image n'a pas de symbole de ponctuation; Juste la chaîne avec les caractères est retournée.

Exemple 3: Programme d'utilisation d'une boucle inverse pour supprimer la ponctuation en C++

Alternativement, nous pouvons utiliser une boucle conventionnelle pour localiser les ponctuations dans la chaîne donnée et les effacer avec la méthode d'effacement String :: Effacer. La boucle doit être dans l'ordre inverse pour éviter les performances non déterministes tout en supprimant les composants pendant l'itération.

La chaîne est définie avec le nom «string_str» comme dans une classe standard de chaîne, et la chaîne contient la chaîne avec quelques caractères d'alphabet et quelques symboles de ponctuation. Après la déclaration de chaîne, nous avons une boucle pour itératera sur chaque caractère de chaîne dans l'ordre inversé. Ensuite, nous avons une fonction de ispunct qui vérifie les caractères de ponctuation dans la chaîne spécifiée dans la condition IF. Si un caractère de ponctuation est trouvé, il sera effacé dans la fonction d'effacement.

#inclure
#inclure
#inclure
int main()

std :: String String_str = "C '| Plus [pluspro @ gr @@ ^ a & mm!-ing ";
pour (int i = string_str.size () - 1; i> = 0; je--)
if (ispunct (string_str [i]))
String_str.effacer (i, 1);


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

La chaîne résultante n'a pas de caractère de ponctuation, comme le montre l'image suivante.

Exemple 4: Programme à l'aide d'une fonction personnalisée pour supprimer la ponctuation en C++

Alternativement, la procédure précédente peut être déplacée vers une fonction distincte, qui génère une copie locale de la chaîne et fonctionne dessus, renvoyant la valeur formatée au code d'origine. La fonction personnalisée est utilisée pour améliorer la fonctionnalité pour activer des jeux de caractères distincts ou même passer la fonction de critère personnalisé pour le troisième paramètre de l'algorithme supprimé_IF.

Nous avons la définition de la fonction comme «Supprimer lepunctuation» dans le programme suivant et passer la référence de chaîne «Str» en tant que paramètre. Dans la fonction, nous avons la «température» en fonction de laquelle nous passons «str. Ensuite, nous avons une fonction d'effacement qui appelle la fonction std :: supprime_if.

Après cela, nous avons la méthode principale où nous avons défini et initialisé un «contenu» de chaîne. De plus, la fonction a invoqué la fonction spécifiée ci-dessus «supprimer» ici à laquelle la chaîne «contenu» est passé. La chaîne analysée sera imprimée après avoir retiré les symboles de ponctuation.

#inclure
#inclure
#inclure
#inclure
Utilisation de std :: cout; Utilisation de STD :: CIN;
Utilisation de std :: endl; Utilisation de Std :: String;
String SupporPunctuation (const String & Str)
chaîne tempor (str);
temp.Effacer (std :: retire_if (temp.begin (), temp.end (), ispunct), temp.fin());
Tempère de retour;

int main()
String Content = "Have | ,! a @@ ^ () g ^^ o!OD D @ ++ ay |?"
couter<< "string content:" << content <String Format_Content = RemovePunctuation (Content);
couter<< "Parsed string :" <retour 0;

La chaîne avec des caractères de ponctuation et la chaîne sans les caractères de ponctuation sont affichées ici sur l'écran de sortie.

Conclusion

Pour résumer, nous avons couvert plusieurs façons de C ++ pour supprimer les caractères de ponctuation d'une chaîne. Vous pouvez utiliser les quatre méthodes ci-dessus pour supprimer tous les caractères de ponctuation d'une chaîne. Ces méthodes vous donnent une chaîne de ponctuation filtrante en C++. En lisant l'article, vous pouvez découvrir lequel de ces approches est le plus pratique.