Heim > Backend-Entwicklung > C++ > Wie kann ich numerische Werte innerhalb einer Zeichenfolge in C effizient identifizieren?

Wie kann ich numerische Werte innerhalb einer Zeichenfolge in C effizient identifizieren?

Patricia Arquette
Freigeben: 2024-12-18 02:08:10
Original
785 Leute haben es durchsucht

How Can I Efficiently Identify Numeric Values Within a String in C  ?

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

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

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!

Quelle:php.cn
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