Wie konvertiert man Float in String in C++

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie Makroausdruck, um einen Fließkommazahl in eine Zeichenkette in C++ zu konvertieren
  2. Verwenden Sie die Methode std::to_string(), um eine Fließkomma-Konstante in eine Zeichenkette in C++ zu konvertieren
  3. Verwenden Sie die Klasse std::stringstream und die Methode str(), um eine Fließkommazahl in eine Zeichenkette in C++ zu konvertieren
Wie konvertiert man Float in String in C++

Dieser Artikel stellt mehrere Methoden zur Konvertierung eines Fließkomma-Zahlen in eine Zeichenkette in C++ vor.

Verwenden Sie Makroausdruck, um einen Fließkommazahl in eine Zeichenkette in C++ zu konvertieren

Präprozessor-Makros können verwendet werden, um eine konstante Fließkommazahl in einen Zeichenkettenwert umzuwandeln. Dabei ist zu beachten, dass diese Lösung nur für die Konvertierung von literaler Fließkommazahl gilt. Das folgende Code-Beispiel zeigt, wie die string-Variablenkonstruktor-Anweisung mit dem Zeichenkettenmakro aufgerufen wird. Das Makro STRING verwendet den Operator #, um übergebene Argumente in eine Zeichenkettenkonstante zu konvertieren.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

#define STRING(num) #num

int main() {
  string num_str(STRING(123.456));
  num_str.empty() ? cout << "empty\n" : cout << num_str << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

123.456

Falls die Fließkomma-Konstante als ein anderer Makroausdruck definiert ist, sollte der obige Code durch ein zweistufiges Makro ersetzt werden, um korrekte Ergebnisse zu erhalten, wie im nächsten Codesegment gezeigt:

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

#define STRING(num) STR(num)
#define STR(num) #num

#define NUMBER 123.456

int main() {
  string num_str(STRING(NUMBER));
  num_str.empty() ? cout << "empty\n" : cout << num_str << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

123.456

Verwenden Sie die Methode std::to_string(), um eine Fließkomma-Konstante in eine Zeichenkette in C++ zu konvertieren

Die Funktion to_string ist im <string> Header definiert und kann verschiedene numerische Typen in einen string Wert konvertieren. Die Methode nimmt einen numerischen Wert als Parameter und gibt den Wert std::string zurück. Beachten Sie, dass to_string unerwartete Ergebnisse zurückgeben kann, da die Anzahl der signifikanten Stellen in der zurückgegebenen Zeichenkette Null sein kann, wie im Beispielcode gezeigt wird:

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  float n1 = 123.456;
  double n2 = 0.456;
  double n3 = 1e-40;
  string num_str1(std::to_string(n1));
  string num_str2(std::to_string(n2));
  string num_str3(std::to_string(n3));
  num_str1.empty() ? cout << "empty\n" : cout << num_str1 << endl;
  num_str2.empty() ? cout << "empty\n" : cout << num_str2 << endl;
  num_str3.empty() ? cout << "empty\n" : cout << num_str3 << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

123.456001
0.456000
0.000000

Verwenden Sie die Klasse std::stringstream und die Methode str(), um eine Fließkommazahl in eine Zeichenkette in C++ zu konvertieren

std::stringstream ist eine mächtige Klasse zur Durchführung von Ein-/Ausgabeoperationen an String-Objekten. In dieser Lösung verwenden wir sie, um eine einzelne Fließkomma-Variable in das stringstream-Objekt einzufügen. Dann rufen wir die eingebaute Methode str auf, um numerische Typen zu string Objekten zu verarbeiten. Beachten Sie, dass die zurückgegebene string ein temporäres Objekt ist, so dass der Aufruf anderer Methoden auf das Ergebnis einen baumelnden Zeiger ergibt (siehe die im Beispiel auskommentierte Zeile).

#include <iostream>
#include <sstream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  float n1 = 123.456;
  std::stringstream sstream;

  sstream << n1;
  string num_str = sstream.str();
  // auto *ptr = sstream.str().c_str(); // RESULTS in dangling pointer
  num_str.empty() ? cout << "empty\n" : cout << num_str << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

123.456
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C++ Float