Comment vérifier si une chaîne contient des espaces/onglets/nouvelles lignes (tout ce qui est vide)?

Je sais qu'il y a un "isspace" fonction qui vérifie pour les espaces, mais cela m'obligerait à parcourir chaque caractère dans la chaîne, ce qui peut être mauvais sur les performances puisque ce serait un lot. Est-il un moyen rapide de vérifier si une std::string ne contient que des espaces?

ex:

function("       ") //returns true
function("    4  ") //returns false

Une solution, j'ai pensé est d'utiliser des regex, je saurai qu'il ne contient que des espaces si c'est faux... mais je ne suis pas si sûr que ce serait plus efficace que la isspace fonction.

regex: [\w\W] //checks for any word character(a,b,c..) and non-word character([,],..)

merci d'avance!

"qui m'obligerait à parcourir chaque caractère dans la chaîne, ce qui peut être mauvais sur les performances" Comment envisagez-vous de tester si tous les caractères correspondent à vos critères de sans itération sur tous les caractères dans la chaîne?
Ne vous inquiétez pas au sujet de micro-optimisation jusqu'à ce que votre solution est en ordre de marche.
À ma connaissance il n'est pas possible de voir si une chaîne contient des espaces, sans vérifier si chaque caractère est un espace, il ne peut pas être fait n'importe quel plus rapide, sauf si vous en trouver un non-espace vous renvoie false là et puis au lieu de vérifier le reste de la chaîne.
Vous pouvez consulter le système de temps avant et après les appels avec chaque fonction pour déterminer lequel est le plus rapide.
Oui, les gars, vous êtes de droite 😛

OriginalL'auteur unwise guy | 2012-07-11