So identifizieren Sie Ziffern innerhalb einer Zeichenfolge mit C
Das Codieren einer Funktion, die validieren kann, ob eine Zeichenfolge einen numerischen Wert in C darstellt, kann gestellt werden eine erhebliche Herausforderung. Dieser Artikel befasst sich mit diesem Problem und stellt eine effiziente Lösung vor.
Ursprünglicher Versuch
Zunächst wurde eine Funktion namens isParam mit der Absicht entwickelt, festzustellen, ob eine Zeile innerhalb eines Textes Die Datei stellte einen numerischen Wert dar. Die Funktion verwendete die Funktionen isdigit und atoi, obwohl dabei unvorhergesehene Fehler aufgetreten sind.
Alternative Ansätze
Anstelle der ursprünglichen Funktion wird eine andere Methode empfohlen. Bei diesem Ansatz wird die Zeichenfolge durchlaufen, bis ein nicht numerisches Zeichen entdeckt wird. Wenn solche Zeichen identifiziert werden, gilt die Zeichenfolge als nicht numerisch. Hier ist der 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(); }
Alternativ kann die C 11-Syntax genutzt werden, um das gleiche Ergebnis zu erzielen:
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(); }
Einschränkungen und Verbesserungen
Es ist erwähnenswert, dass die bereitgestellten Lösungen nur positive ganze Zahlen validieren. Für Szenarien mit negativen Ganzzahlen oder Dezimalwerten wäre eine umfassendere bibliotheksbasierte Methode ratsam. Die Erweiterung des Codes zur Verarbeitung negativer Ganzzahlen ist relativ einfach, die Implementierung der Dezimalvalidierung erfordert jedoch einen robusteren Ansatz.
Das obige ist der detaillierte Inhalt vonWie kann ich numerische Werte innerhalb einer Zeichenfolge in C effizient identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!