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
Mary-Kate OlsenOriginal
2024-12-17 09:20:25169Durchsuche

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();
}

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!

Stellungnahme:
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