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

Comment vérifier si une chaîne C représente un entier ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-05 21:32:02399parcourir

How to Check If a C   String Represents an Integer?

Vérifier si une chaîne C est un entier

Dans certaines situations, comme lors du traitement des entrées de l'utilisateur, il peut être nécessaire de faire la différence entre les chaînes qui représentent des entiers et celles qui ne le font pas. Heureusement, il existe plusieurs façons d'accomplir cette tâche en C.

Une approche consiste à exploiter la fonction C strtol, qui convertit une représentation sous forme de chaîne d'un entier en une valeur entière. Pour utiliser strtol, vous pouvez écrire une fonction simple qui encapsule le processus de conversion :

<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>
  • Aperçu : La fonction vérifie si la chaîne fournie s représente un entier.
  • Chaînes vides : il vérifie d'abord si la chaîne est vide.
  • Symboles de début : il vérifie également les caractères non numériques de début, tels que ' ' ou '-', et renvoie false s'ils ne sont pas présents (indiquant un nombre non entier).
  • Conversion strtol : La fonction utilise la fonction strtol pour effectuer la conversion. Si strtol rencontre un caractère non numérique, il attribue l'adresse de ce caractère au pointeur p.
  • Évaluation du résultat : Si p ne pointe pas vers la fin de la chaîne (représentée par le caractère ' '), cela signifie que strtol a rencontré un caractère non numérique. Dans ce cas, la fonction renvoie false, indiquant que s n'est pas un entier.

Cette fonction fournit un moyen fiable de déterminer si une chaîne donnée peut être analysée comme un entier. En l'incorporant dans votre code, vous pouvez gérer de manière appropriée les chaînes représentant des entiers et des non-entiers.

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