Heim > Artikel > Backend-Entwicklung > Wie kann ich Strings in C in Double-Werte konvertieren und gleichzeitig nicht-numerische Eingaben verarbeiten?
Konvertieren von Strings in Double-Werte in C
Problemstellung:
Konvertieren einer String-Darstellung einer Zahl in einen Gleitkomma-Double-Wert umwandeln. Wenn die Zeichenfolge nicht numerisch ist, geben Sie 0 zurück.
Lösung:
Um eine Zeichenfolge in C in einen Double-Wert umzuwandeln, können Sie die Funktion std::stod verwenden , das einen String-Parameter entgegennimmt und ihn in einen Double-Wert konvertiert. Diese Funktion gibt jedoch für nicht numerische Zeichenfolgen nicht 0 zurück.
Benutzerdefinierte Funktion für die nicht numerische Verarbeitung:
Um dieses Problem zu beheben, können wir eine benutzerdefinierte Funktion erstellen das gibt 0 für nicht numerische Zeichenfolgen zurück. Hier ist eine Implementierung:
<code class="cpp">#include <sstream> double string_to_double(const std::string& s) { std::istringstream i(s); double x; if (!(i >> x)) { return 0; } return x; }</code>
Diese Funktion verwendet std::istringstream, um den Double-Wert aus der Zeichenfolge zu extrahieren. Wenn die Extraktion fehlschlägt, wird 0 zurückgegeben.
Verwendungsbeispiele:
Hier sind einige Beispiele für die Verwendung der string_to_double-Funktion:
<code class="cpp">assert(0.5 == string_to_double("0.5")); assert(0.5 == string_to_double("0.5 ")); assert(0.5 == string_to_double("0.5a")); assert(0 == string_to_double("foobar"));</code>
Hinweis zu nicht numerischen Nullen:
Es ist wichtig Beachten Sie, dass diese Funktion nicht alle nicht numerischen Zeichenfolgen von Nullen unterscheiden kann. Beispielsweise werden die folgenden Zeichenfolgen gemäß dieser Implementierung alle als Nullen betrachtet:
Das obige ist der detaillierte Inhalt vonWie kann ich Strings in C in Double-Werte konvertieren und gleichzeitig nicht-numerische Eingaben verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!