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
Patricia ArquetteOriginal
2024-12-18 02:08:10786Durchsuche

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

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!

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