Maison >développement back-end >C++ >Comment déterminer si une chaîne C représente un entier ?
Problème :
Lorsque vous travaillez avec une entrée utilisateur, vous pouvez rencontrer des chaînes qui contiennent un mélange de mots et de chiffres. Si vous souhaitez isoler uniquement les mots, vous avez besoin d'une méthode pour les distinguer des nombres.
Solution :
Une approche pour vérifier si une chaîne représente un entier est pour utiliser la fonction strtol(). Pour simplifier son utilisation, vous pouvez l'incorporer dans une fonction personnalisée :
<code class="cpp">inline bool isInteger(const std::string & s) { if(s.empty() || ((!isdigit(s[0])) && (s[0] != '-') && (s[0] != '+'))) return false; char * p; strtol(s.c_str(), &p, 10); return (*p == 0); }</code>
Explication :
strtol() analyse une chaîne comme une valeur numérique, en s'arrêtant à le premier caractère non numérique. En fournissant un pointeur vers une variable de caractère (p), il indique la position du premier caractère invalide. Si p pointe vers la fin de la chaîne, tous les caractères ont été convertis avec succès, indiquant que la chaîne est un entier.
Utilisation :
Dans votre fonction principale, vous peut intégrer cette fonction comme suit :
<code class="cpp">int main () { stringstream ss (stringstream::in | stringstream::out); string word; string str; getline(cin,str); ss<<str; while(ss>>word) { if(isInteger(word)) continue; cout<<word<<endl; } }</code>
Cela produira des mots qui ne sont pas des entiers tout en ignorant les entrées numériques.
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!