Maison >développement back-end >C++ >Comment puis-je supprimer efficacement les espaces des chaînes C ?
Suppression efficace des espaces des chaînes C
La suppression des espaces des chaînes C est une tâche courante pour la manipulation de chaînes. Bien qu'il soit possible de parcourir les caractères manuellement, il existe une approche plus efficace.
La méthode préférée implique le puissant algorithme de bibliothèque standard remove_if et le prédicat isspace. remove_if élimine les éléments d'une séquence en fonction d'une condition spécifiée, tandis que isspace vérifie les caractères d'espacement.
Pour utiliser cela, vous pouvez appeler :
remove_if(str.begin(), str.end(), isspace);
Cette opération à elle seule ne modifie pas le la longueur de la chaîne mais réorganise les éléments en conséquence. Pour ajuster la longueur, nous utilisons string::erase:
str.erase(remove_if(str.begin(), str.end(), isspace), str.end());
remove_if évite plusieurs copies de données, ce qui le rend très efficace. Voici une implémentation simplifiée :
template<typename T, typename P> T remove_if(T beg, T end, P pred) { T dest = beg; for (T itr = beg;itr != end; ++itr) if (!pred(*itr)) *(dest++) = *itr; return dest; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!