Heim >Backend-Entwicklung >C++ >Wie konvertiert man Strings in C sicher in Doubles und verarbeitet nicht-numerische Strings?
Konvertieren von Strings in Doubles in C mit spezieller Behandlung für nicht-numerische Strings
In C kann das Konvertieren von Strings in Doubles nahtlos mit durchgeführt werden Integrierte Funktionen. Es ist jedoch von entscheidender Bedeutung, zwischen numerischen und nicht numerischen Zeichenfolgen zu unterscheiden. Um dieser Herausforderung zu begegnen, präsentieren wir eine Lösung, die 0 für nicht numerische Zeichenfolgen zurückgibt.
Funktionsimplementierung:
Der Kern unserer Lösung liegt in der Funktion string_to_double:
<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>
So funktioniert es:
Testen der Funktion:
In den bereitgestellten Testfällen demonstrieren wir, wie die Funktion verschiedene numerische und nicht numerische Zeichenfolgen korrekt interpretiert:
<code class="cpp">int main() { assert(0.5 == string_to_double("0.5")); assert(0.5 == string_to_double("0.5 ")); assert(0.5 == string_to_double(" 0.5")); assert(0.5 == string_to_double("0.5a")); // Non-numerical strings will return 0: assert(0 == string_to_double("foobar")); }</code>
Einschränkungen:
Es ist wichtig zu beachten, dass aufgrund der spezifischen Anforderungen an die Rückgabe von 0 für nicht numerische Zeichenfolgen eine Unterscheidung zwischen numerischen Zeichenfolgen, die Null darstellen, und wirklich nicht numerischen Zeichenfolgen nicht möglich ist.
Das obige ist der detaillierte Inhalt vonWie konvertiert man Strings in C sicher in Doubles und verarbeitet nicht-numerische Strings?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!