Maison > développement back-end > C++ > Comment puis-je identifier efficacement les valeurs numériques dans une chaîne en C ?

Comment puis-je identifier efficacement les valeurs numériques dans une chaîne en C ?

Patricia Arquette
Libérer: 2024-12-18 02:08:10
original
790 Les gens l'ont consulté

How Can I Efficiently Identify Numeric Values Within a String in 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();
}
Copier après la connexion

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();
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal