std::stof, std::stod, std::stold
| 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 Fließkommawert in einem String str.
Sei ptr ein interner (innerhalb der Konvertierungsfunktionen) Zeiger vom Typ char* (1,3,5) oder wchar_t* (2,4,6), je nach Fall.
Die Funktion verwirft beliebige Leerzeichen (wie von std::isspace bestimmt), bis das erste Nicht-Leerzeichen 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:
- Dezimale Gleitkomma-Ausdrücke. Sie bestehen aus den folgenden Teilen:
- (optional) Vorzeichen (+ oder -)
- Nichtleere Sequenz von Dezimalziffern, die optional ein Dezimaltrennzeichen enthält (wie von der aktuellen C Locale bestimmt) (definiert den Significand)
- (optional)
eoderEgefolgt von einem optionalen Minus- oder Pluszeichen und einer nichtleeren Sequenz von Dezimalziffern (definiert den Exponenten zur Basis 10)
- Hexadezimale Gleitkomma-Ausdrücke. Sie bestehen aus den folgenden Teilen:
- (optional) Vorzeichen (+ oder -)
-
0xoder0X - Nichtleere Sequenz von Hexadezimalziffern, die optional ein Dezimaltrennzeichen enthält (wie von der aktuellen C Locale bestimmt) (definiert den Significand)
- (optional)
poderPgefolgt von einem optionalen Minus- oder Pluszeichen und einer nichtleeren Sequenz von Dezimalziffern (definiert den Exponenten zur Basis 2)
- Unendlichkeits-Ausdrücke. Sie bestehen aus den folgenden Teilen:
- (optional) Vorzeichen (+ oder -)
-
INFoderINFINITY(Groß-/Kleinschreibung wird ignoriert)
- Nicht-eine-Zahl-Ausdrücke. Sie bestehen aus den folgenden Teilen:
- (optional) Vorzeichen (+ oder -)
-
NANoderNAN(char_sequence )(Groß-/Kleinschreibung des TeilsNANwird ignoriert). char_sequence darf nur Ziffern, lateinische Buchstaben und Unterstriche enthalten. Das Ergebnis ist ein Quiet-NaN-Gleitkommawert.
- Andere Ausdrücke, die von der aktuell installierten C Locale akzeptiert werden könnten.
Wenn pos kein Nullzeiger ist, empfängt 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 vom Konvertierungsprozess verarbeiteten Zeichen angibt.
Inhalt |
[bearbeiten] Parameter
| str | - | der zu konvertierende String |
| pos | - | Adresse eines Integers, um die Anzahl der verarbeiteten Zeichen zu speichern |
[bearbeiten] Rückgabewert
Der in den angegebenen Fließkommatyp konvertierte String.
[bearbeiten] Ausnahmen
std::invalid_argument, wenn keine Konvertierung durchgeführt werden konnte.
std::out_of_range, wenn der konvertierte Wert außerhalb des Bereichs des Ergebnistyps liegt oder wenn die zugrunde liegende Funktion (std::strtof, std::strtod oder std::strtold) errno auf ERANGE setzt.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2009 | C++11 | std::out_of_range würde nicht ausgelöst, wenn der konvertierte Wert außerhalb des Bereichs des Ergebnistyps liegen würde |
wirft |
| LWG 2403 | C++11 | stof rief std::strtod oder std::wcstod auf |
stof ruft std::strtof oder std::wcstof auf |
[bearbeiten] Siehe auch
| (C++11)(C++11)(C++11) |
konvertiert einen String in eine vorzeichenbehaftete Ganzzahl (function) |
| (C++11)(C++11) |
konvertiert einen String in eine vorzeichenlose Ganzzahl (function) |
| (C++17) |
konvertiert eine Zeichensequenz in einen Ganzzahl- oder Gleitkommawert (Funktion) |