Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit Fehlern bei der Konvertierung von Zeichenfolgen in Ganzzahlen in C um?

Wie gehe ich mit Fehlern bei der Konvertierung von Zeichenfolgen in Ganzzahlen in C um?

DDD
DDDOriginal
2024-11-04 21:32:02510Durchsuche

How to Handle String to Integer Conversion Failures in C  ?

Konvertieren von Zeichenfolgen in Ganzzahlen mit Fehlerbehandlung in C

Beim Umgang mit Zeichenfolgen in C besteht häufig die Notwendigkeit, diese in numerische Darstellungen umzuwandeln wie zum Beispiel ganze Zahlen. Ein gängiger Ansatz hierfür ist die Verwendung der Funktion std::stoi der C-Standardbibliothek. Dieser Funktion fehlt jedoch die Möglichkeit, Fehler bei der Konvertierung zu melden. Für robusteren Code untersuchen wir, wie mit fehlgeschlagenen Konvertierungen mit boost::lexical_cast und alternativen Ansätzen umgegangen wird.

boost::lexical_cast

Die boost::lexical_cast-Funktion bietet eine robuste Möglichkeit, Zeichenfolgen in Ganzzahlen umzuwandeln. Es wird eine Ausnahme ausgelöst, wenn die Konvertierung nicht durchgeführt werden kann. Der folgende Codeausschnitt demonstriert seine Verwendung:

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

try {
    int i = boost::lexical_cast<int>(s);
    // ...
} catch(...) {
    // ...
}</code>

Nicht-Boost-Ansätze

Wenn die Boost-Bibliothek nicht verfügbar ist, können alternative Methoden eingesetzt werden:

  1. Verwendung von std::stringstream: Durch das Einlesen der Zeichenfolge in ein std::stringstream-Objekt kann die Konvertierung fehlschlagen, wenn die Zeichenfolge entweder nicht als Ganzzahl gelesen werden kann oder zusätzliche nicht- Leerzeicheneingabe.
  2. Erstellen einer benutzerdefinierten lexical_cast-Funktion: Diese Funktion kann implementiert werden, indem der std::stringstream-Ansatz in eine Vorlage eingeschlossen wird. Funktion.
  3. Verwendung von No-Throw-Versionen des std::stringstream-Ansatzes: Wenn Sie das Auslösen von Ausnahmen vermeiden möchten, können Sie eine lexical_cast-Funktion erstellen, die einen Bool-Wert zurückgibt, der den Erfolg oder Misserfolg angibt der Konvertierung.

Zusammenfassend lässt sich sagen, dass die Verwendung von boost::lexical_cast, std::stringstream oder einer benutzerdefinierten lexical_cast-Funktion robuste Konvertierungen von Zeichenfolgen in Ganzzahlen mit Fehlerbehandlungsfunktionen ermöglicht. Die richtige Wahl hängt von der Verfügbarkeit der Bibliotheken und dem erforderlichen Ausnahmeverhalten ab.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Fehlern bei der Konvertierung von Zeichenfolgen in Ganzzahlen in C um?. 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