Heim > Backend-Entwicklung > C++ > Wie kann ich effizient prüfen, ob ein C-String eine Zahl darstellt?

Wie kann ich effizient prüfen, ob ein C-String eine Zahl darstellt?

Mary-Kate Olsen
Freigeben: 2024-12-17 09:20:25
Original
262 Leute haben es durchsucht

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

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();
}
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage