Maison >développement back-end >C++ >Comment puis-je identifier efficacement les valeurs numériques dans une chaîne en C ?
Comment identifier des chiffres dans une chaîne en utilisant C
Codage d'une fonction capable de valider si une chaîne représente une valeur numérique en C peut poser un défi important. Cet article aborde ce problème et présente une solution efficace.
Tentative originale
Initialement, une fonction nommée isParam a été développée dans le but de vérifier si une ligne dans un texte Le fichier constituait une valeur numérique. La fonction a utilisé les fonctions isdigit et atoi, bien qu'elle ait rencontré des erreurs imprévues.
Approches alternatives
Au lieu de la fonction d'origine, une méthode différente est recommandée. Cette approche consiste à parcourir la chaîne jusqu'à ce qu'un caractère non numérique soit découvert. Si de tels caractères sont identifiés, la chaîne est considérée comme non numérique. Voici le code :
bool is_number(const std::string& s) { std::string::const_iterator it = s.begin(); while (it != s.end() && std::isdigit(*it)) ++it; return !s.empty() && it == s.end(); }
Alternativement, la syntaxe C 11 peut être exploitée pour obtenir le même résultat :
bool is_number(const std::string& s) { return !s.empty() && std::find_if(s.begin(), s.end(), [](unsigned char c) { return !std::isdigit(c); }) == s.end(); }
Limitations et améliorations
Il est à noter que les solutions fournies ne valident que des entiers positifs. Pour les scénarios impliquant des entiers négatifs ou des valeurs décimales, une méthode plus complète basée sur une bibliothèque serait recommandée. Étendre le code pour gérer les entiers négatifs est relativement simple, mais la mise en œuvre de la validation décimale nécessite une approche plus robuste.
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!