Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Strings in C in Double-Werte konvertieren und gleichzeitig nicht-numerische Eingaben verarbeiten?

Wie kann ich Strings in C in Double-Werte konvertieren und gleichzeitig nicht-numerische Eingaben verarbeiten?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 08:07:29856Durchsuche

How Can I Convert Strings to Double Values in C   while Handling Non-Numerical Inputs?

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:

  • "0"
  • "0."
  • "0.0"
  • " 0"
  • "-0"

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!

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