Maison > développement back-end > C++ > Comment puis-je vérifier efficacement si une chaîne C représente un nombre ?

Comment puis-je vérifier efficacement si une chaîne C représente un nombre ?

Mary-Kate Olsen
Libérer: 2024-12-17 09:20:25
original
164 Les gens l'ont consulté

How Can I Efficiently Check if a C   String Represents a Number?

Comment déterminer si une chaîne représente un nombre en C

Déchiffrer si une chaîne constitue un nombre est souvent rencontré en programmation, notamment en scénarios impliquant l’analyse de fichiers ou la validation de données. Cette question explore les approches permettant d'identifier les chaînes numériques en C.

La fonction d'origine, isParam, a tenté d'utiliser atoi et isdigit pour déterminer si une chaîne est numérique. Bien qu'atoi tente de convertir une chaîne en nombre entier, il n'est pas fiable pour détecter les caractères non numériques dans la chaîne.

Approche itérative efficace

Une méthode plus efficace implique parcourir la chaîne caractère par caractère jusqu'à ce qu'un caractère non numérique soit rencontré. Si l'itération se termine sans trouver de caractère non numérique, la chaîne est considérée comme numérique. Voici la fonction mise à jour :

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

Approche Lambda C 11

En C 11 et versions ultérieures, les lambdas peuvent simplifier ce processus :

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

Remarque : Ces solutions ne gèrent que les entiers positifs. Pour les entiers et les fractions négatifs, envisagez d'utiliser une approche plus complète basée sur une bibliothèque.

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