Namespaces
Variants

std::stof, std::stod, std::stold

Aus de.cppreference.net
 
 
 
std::basic_string
 
Definiert in Header <string>
float       stof ( const std::string& str, std::size_t* pos = nullptr );
(1) (seit C++11)
float       stof ( const std::wstring& str, std::size_t* pos = nullptr );
(2) (seit C++11)
double      stod ( const std::string& str, std::size_t* pos = nullptr );
(3) (seit C++11)
double      stod ( const std::wstring& str, std::size_t* pos = nullptr );
(4) (seit C++11)
long double stold( const std::string& str, std::size_t* pos = nullptr );
(5) (seit C++11)
long double stold( const std::wstring& str, std::size_t* pos = nullptr );
(6) (seit C++11)

Interpretiert einen Gleitkommawert in einer Zeichenkette str.

Sei ptr ein interner (für die Konvertierungsfunktionen) Zeiger vom Typ char* (1,3,5) oder wchar_t* (2,4,6), entsprechend.

1) Ruft std::strtof(str.c_str(), &ptr) auf.
2) Ruft std::wcstof(str.c_str(), &ptr) auf.
3) Ruft std::strtod(str.c_str(), &ptr) auf.
4) Ruft std::wcstod(str.c_str(), &ptr) auf.
5) Ruft std::strtold(str.c_str(), &ptr) auf.
6) Ruft std::wcstold(str.c_str(), &ptr) auf.

Die Funktion verwirft alle Leerraumzeichen (wie durch std::isspace bestimmt), bis das erste Nicht-Leerraumzeichen gefunden wird. Dann nimmt sie so viele Zeichen wie möglich, um eine gültige Gleitkommadarstellung zu bilden, und konvertiert sie in einen Gleitkommawert. Der gültige Gleitkommawert kann einer der folgenden sein:

  • Dezimaler Gleitkommaausdruck. Er besteht aus den folgenden Teilen:
  • (optional) Plus- oder Minuszeichen
  • Nichtleere Folge von Dezimalziffern, die optional ein Dezimaltrennzeichen enthalten kann (wie durch das aktuelle C Locale bestimmt) (definiert die Mantisse)
  • (optional) e oder E gefolgt von optionalem Minus- oder Pluszeichen und einer nichtleeren Folge von Dezimalziffern (definiert den Exponenten zur Basis 10)
  • Hexadezimaler Gleitkommaausdruck. Er besteht aus den folgenden Teilen:
  • (optional) Plus- oder Minuszeichen
  • 0x oder 0X
  • Nichtleere Folge von Hexadezimalziffern, die optional ein Dezimaltrennzeichen enthalten kann (wie durch das aktuelle C Locale bestimmt) (definiert die Mantisse)
  • (optional) p oder P gefolgt von optionalem Minus- oder Pluszeichen und einer nichtleeren Folge von Dezimalziffern (definiert den Exponenten zur Basis 2)
  • Unendlichkeitsausdruck. Er besteht aus den folgenden Teilen:
  • (optional) Plus- oder Minuszeichen
  • INF oder INFINITY Groß-/Kleinschreibung ignorierend
  • Keine-Zahl-Ausdruck (NaN). Er besteht aus den folgenden Teilen:
  • (optional) Plus- oder Minuszeichen
  • NAN oder NAN(char_sequence ) Groß-/Kleinschreibung des NAN Teils ignorierend. char_sequence darf nur Ziffern, lateinische Buchstaben und Unterstriche enthalten. Das Ergebnis ist ein stiller NaN-Gleitkommawert.
  • jeder andere Ausdruck, der vom aktuell installierten C Locale akzeptiert werden könnte.

Wenn pos kein Nullzeiger ist, erhält ptr die Adresse des ersten nicht konvertierten Zeichens in str.c_str(), und der Index dieses Zeichens wird berechnet und in *pos gespeichert, was die Anzahl der Zeichen angibt, die von der Konvertierung verarbeitet wurden.

Parameter

str - die zu konvertierende Zeichenkette
pos - Adresse einer Ganzzahl zum Speichern der Anzahl verarbeiteter Zeichen

Rückgabewert

Der in den angegebenen Gleitkommatyp konvertierte String.

Ausnahmen

std::invalid_argument falls keine Konvertierung durchgeführt werden konnte.

std::out_of_range falls der konvertierte Wert außerhalb des Bereichs des Ergebnistyps liegen würde oder wenn die zugrunde liegende Funktion ( std::strtof , std::strtod oder std::strtold ) errno auf ERANGE setzt.

Beispiel

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2009 C++11 std::out_of_range würde nicht geworfen, wenn der konvertierte
Wert außerhalb des Bereichs des Ergebnistyps liegen würde
wird werfen
LWG 2403 C++11 stof rief std::strtod oder std::wcstod auf stof ruft std::strtof oder std::wcstof auf

Siehe auch

(C++11) (C++11) (C++11)
konvertiert einen String in eine vorzeichenbehaftete Ganzzahl
(Funktion)
(C++11) (C++11)
konvertiert einen String in eine vorzeichenlose Ganzzahl
(Funktion)
(C++17)
konvertiert eine Zeichenfolge in einen Ganzzahl- oder Gleitkommawert
(Funktion)