Supprimer les espaces de la chaîne C ++

Supprimer les espaces de la chaîne C ++
Nos données peuvent contenir des espaces supplémentaires de temps à autre, ce qui peut entraîner des problèmes pendant l'analyse des données. Lorsque le besoin se produit, savoir comment supprimer des espaces supplémentaires comme des onglets, des aliments de ligne et des retours de chariot sont utiles. Voici plusieurs explications pour lesquelles les espaces devraient être retirés des chaînes:
  • Espaces inutiles au début, à la fin et même au centre
  • Essayer de comprendre combien de caractères il y a dans une chaîne
  • Tenter d'organiser un ensemble de cordes
  • Lorsque deux cordes sont comparées
  • Ajout d'une URL à un site

Si notre code C ++ rencontre des espaces tout en effectuant l'une de ces opérations précédentes, nous recevrons des résultats inattendus, tels que les mauvais dénombrements de caractères, les listes à trier incorrectement, les comparaisons de chaînes inexactes et les URL cassées. Par défaut, ceux-ci sont considérés comme des caractères d'espace, je.e., «\ N», «\ t», «», «\ v», «\ r», «f».

Il est parfois important de supprimer l'espace des chaînes de programmation pour éviter les résultats inattendus. Apprenez à retirer les espaces des chaînes et à faire face à des espaces supplémentaires avec cet article.

Exemple 1: Utilisation de la méthode :: Isspace pour supprimer les espaces blancs de la chaîne en C++

Pour extraire les caractères d'espace blanc de std :: cordes, l'approche commune consiste à utiliser le std :: supprimer si la méthode. L'algorithme STD :: Remove_IF n'élimine pas efficacement les caractères de la chaîne mais déplace plutôt tous les caractères avec les espaces non blancs vers l'avant et produit un itérateur faisant référence à la fin. La méthode std :: retire_if nécessite un prédicat qui décide quels caractères effacer de la chaîne.

La méthode isspace () est celle qui est spécifiée dans l'en-tête CCTYPE et recherche des caractères d'espace blanc classés par les paramètres régionaux installés.

L'exemple suivant commence à partir de la fonction principale. La déclaration de chaîne de la classe Standard String est définie dans la méthode principale. La variable de chaîne est définie comme «Str» et est initialisée avec la chaîne contenant le caractères blancs. Pour supprimer les espaces blancs de la chaîne, nous avons utilisé la procédure d'effacement normale.

Nous avons utilisé la méthode STD :: REOUP_IF. Dans la méthode STD :: REPOUV_IF, nous avons passé la fonction «:: isspace» dans une recherche d'un caractère blanc dans une chaîne donnée. La chaîne après avoir retiré les espaces blancs sera imprimé sur l'écran suivant:

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

std :: string str = "c \ n \ nplusplus";
Str.Effacer (std :: retire_if (str.begin (), str.end (), :: isspace), str.fin());
std :: cout<< "String:"<< str<<"\n";
retour 0;

Comme vous pouvez le voir, aucun caractère Whitespace ne se trouve dans la chaîne affichée suivante:

Exemple 2: Utilisation de la méthode std :: isspace pour supprimer les espaces blancs de la chaîne en c++

Dans cet exemple, nous utilisons la méthode de liaison standard pour supprimer l'espace de la chaîne en appelant la fonction std :: isspace. Au lieu de dépendre de la classification des paramètres régionaux C des caractères d'espace blanc, nous pouvons utiliser STD :: ISSPACE représenté dans le paramètre de l'en-tête, où l'aspect CTYPE du paramètre local spécifié classe les caractères blancs d'espace.

La liaison d'une fonction avec des espaces réservés vous permet de modifier la position et la quantité de valeurs que la fonction utilisera, modifiant la fonction en fonction du résultat souhaité.

La chaîne est définie comme «str_n» dans l'ensemble et est initialisée avec le mot de chaîne ayant des caractères d'espace blanc entre eux. Ici, nous avons invoqué la méthode d'effacement pour la chaîne «str_n» où deux fonctions sont utilisées std :: retire_if et le std :: bind. Notez que nous avons utilisé STD :: ISSPACE dans la fonction de liaison pour trouver des espaces blancs dans la chaîne; Ensuite, la méthode Effacement supprimera l'espace de la chaîne et renvoie une nouvelle chaîne de résultats.

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

std :: string str_n = "blanc \ n \ nspaces";
str_n.Effacer (std :: retire_if (str_n.commencer(),
str_n.fin(),
std :: bind (std :: isspace,
std :: espaces réservés :: _ 1,
Std :: Locale :: Classic ()
)),
str_n.fin());
std :: cout<< "String:"<retour 0;

Lors de la compilation du programme précédent, le shell affiche les caractères non blancs.

Exemple 3: Utilisation de la méthode unaire pour supprimer les espaces blancs de la chaîne en C++

Au lieu d'utiliser :: isspace ou std :: isspace, nous pouvons créer une condition personnalisée qui renvoie vrai si le personnage est un caractère blanc ou autre. Nous avons créé notre méthode unaire pour supprimer les caractères d'espace de la chaîne.

Nous avons créé une méthode unaire «MyFunction» de Data Type Bool. La fonction est passé avec l'argument de la variable char non signée «MyCHAR». À l'intérieur de la fonction, nous avons une condition de retour qui renvoie le caractère blanc spécifié s'il est trouvé dans la chaîne.

Ensuite, nous avons la fonction principale où la chaîne est générée comme «mystring» et contient les caractères de chaîne avec des caractères blancs d'espace. La méthode d'effacement est utilisée ci-après dans la déclaration de chaîne où retire_if et fonction «myfunction» s'appelle effacer les caractères blancs d'espace.

#inclure
#inclure
#inclure
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.Effacer (std :: retire_if (mystring.begin (), mystring.end (), myfunction), mystring.fin());
std :: cout<< "String:" <retour 0;

La chaîne résultante a tous les caractères non espaces illustrés dans l'écran de shell suivant:

Exemple 5: Utilisation de la méthode Regex pour supprimer les espaces blancs de la chaîne en C++

La méthode Regex Remplace () remplace un modèle d'expression régulière par une chaîne contenant des caractères blancs. En discutons avec l'exemple de démonstration.

Le programme C ++ comprend un fichier regex dans la section d'en-tête pour accéder à la fonction regex_replace dans le programme. L'INT Main est défini, qui a une représentation de chaîne intégrale avec les caractères Whitespace dans une variable de chaîne "Stringis". Ensuite, nous avons appelé la fonction regex dans une représentation regex échangée et passé la variable de chaîne «Stringis» avec l'opérateur «+». La fonction regex_replace est appelée sur la chaîne de variable «Stringis» pour effacer les espaces ou les caractères blancs d'espace de la chaîne donnée:

#inclure
#inclure
#inclure
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<retour 0;

Le Regex Remplace supprime les caractères d'espace de la chaîne entière, qui est imprimée dans le shell de commande d'Ubuntu.

Conclusion

Ainsi, nous pouvons supprimer les caractères d'espace de la chaîne en C ++ à travers diverses méthodes discutées dans cet article. Nous avons toutes les manifestations de ces exemples avec le résultat qui en résulte du programme. Vous avez un nombre suffisant de méthodes pour remplacer ou éliminer les espaces blancs des chaînes C ++. Choisissez toutes les méthodes qui vous attirent tout en étant approprié pour la situation.