Heim > Backend-Entwicklung > C++ > Wie kann ich Strings in C in Ganzzahlen konvertieren und gleichzeitig Konvertierungsfehler behandeln?

Wie kann ich Strings in C in Ganzzahlen konvertieren und gleichzeitig Konvertierungsfehler behandeln?

Barbara Streisand
Freigeben: 2024-11-04 22:49:02
Original
1030 Leute haben es durchsucht

How Can I Convert Strings to Integers in C   While Handling Conversion Errors?

Konvertieren von Zeichenfolgen in Ganzzahlen mit booleschem Fehler in C

Problem:

Das Konvertieren von Zeichenfolgen in Ganzzahlen in C stellt häufig das Problem dar Problem beim Umgang mit ungültigen Konvertierungen. Dies erhöht den Bedarf an einer effizienten Methode zur Durchführung solcher Konvertierungen mit der Möglichkeit, Fehler anzuzeigen.

Lösung: Lexical Cast von Boost

Die lexical_cast-Bibliothek von Boost bietet eine robuste Lösung für sichere String-in-Integer-Konvertierungen. Es löst eine Ausnahme aus, wenn eine ungültige Konvertierung auftritt:

<code class="cpp">#include <boost/lexical_cast.hpp>

try {
    int i = boost::lexical_cast<int>(s);
    // Success handling
} catch(...) {
    // Failure handling
}</code>
Nach dem Login kopieren

Alternative ohne Boost: Standard-Streams und Ausnahmen

Wenn Boost nicht verfügbar ist, können Sie die Standardeingabe verwenden/ Ausgabestream-Operationen mit Ausnahmen:

<code class="cpp">#include <iostream>
#include <sstream>
#include <string>

try {
    std::stringstream ss(s);
    int i;
    if ((ss >> i).fail() || !(ss >> std::ws).eof())
        throw std::bad_cast();
    // Success handling
} catch(...) {
    // Failure handling
}</code>
Nach dem Login kopieren

Lexical Cast von Boost vortäuschen (optional)

Sie können eine angepasste Version von lexical_cast erstellen, ohne Boost zu verwenden:

<code class="cpp">template <typename T>
T lexical_cast(const std::string& s) {
    std::stringstream ss(s);
    T result;
    if ((ss >> result).fail() || !(ss >> std::ws).eof())
        throw std::bad_cast();
    return result;
}</code>
Nach dem Login kopieren

No-Throw-Versionen (optional)

Für No-Throw-Versionen behandeln Sie Ausnahmen innerhalb der lexical_cast-Funktion:

<code class="cpp">template <typename T>
bool lexical_cast(const std::string& s, T& t) {
    try {
        t = lexical_cast<T>(s);
        return true;
    } catch (const std::bad_cast& e) {
        return false;
    }
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Strings in C in Ganzzahlen konvertieren und gleichzeitig Konvertierungsfehler behandeln?. 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