Maison >développement back-end >C++ >Comment déterminer si une chaîne C représente un entier ?

Comment déterminer si une chaîne C représente un entier ?

DDD
DDDoriginal
2024-11-07 04:17:02380parcourir

How to Determine if a C   String Represents an Integer?

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])) &amp;&amp; (s[0] != '-') &amp;&amp; (s[0] != '+'))) return false;

   char * p;
   strtol(s.c_str(), &amp;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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn