Heim >Backend-Entwicklung >C++ >Wie kann ich effizient prüfen, ob ein C-String eine Zahl darstellt?
So bestimmen Sie, ob eine Zeichenfolge eine Zahl in C darstellt
Die Entschlüsselung, ob eine Zeichenfolge eine Zahl darstellt, wird in der Programmierung häufig angewendet, insbesondere in Szenarien mit Dateianalyse oder Datenvalidierung. Diese Frage untersucht Ansätze zur Identifizierung numerischer Zeichenfolgen in C.
Die ursprüngliche Funktion isParam versuchte, atoi und isdigit zu verwenden, um zu bestimmen, ob eine Zeichenfolge numerisch ist. Während atoi versucht, eine Zeichenfolge in eine Ganzzahl umzuwandeln, ist es unzuverlässig, nicht numerische Zeichen innerhalb der Zeichenfolge zu erkennen.
Effizienter Iterationsansatz
Eine effizientere Methode beinhaltet Durchlaufen der Zeichenfolge Zeichen für Zeichen, bis ein nicht numerisches Zeichen gefunden wird. Wenn die Iteration abgeschlossen wird, ohne dass ein nicht numerisches Zeichen gefunden wird, wird die Zeichenfolge als numerisch betrachtet. Hier ist die aktualisierte Funktion:
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(); }
C 11 Lambda Approach
In C 11 und höher können Lambdas diesen Prozess vereinfachen:
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(); }
Hinweis: Diese Lösungen verarbeiten nur positive ganze Zahlen. Erwägen Sie für negative ganze Zahlen und Brüche die Verwendung eines umfassenderen bibliotheksbasierten Ansatzes.
Das obige ist der detaillierte Inhalt vonWie kann ich effizient prüfen, ob ein C-String eine Zahl darstellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!