|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <string> | ||
float stof(conststd::string& str,std::size_t* pos= nullptr); | (1) | (since C++11) |
float stof(conststd::wstring& str,std::size_t* pos= nullptr); | (2) | (since C++11) |
double stod(conststd::string& str,std::size_t* pos= nullptr); | (3) | (since C++11) |
double stod(conststd::wstring& str,std::size_t* pos= nullptr); | (4) | (since C++11) |
longdouble stold(conststd::string& str,std::size_t* pos= nullptr); | (5) | (since C++11) |
longdouble stold(conststd::wstring& str,std::size_t* pos= nullptr); | (6) | (since C++11) |
Interprets a floating point value in a stringstr.
Letptr be an internal (to the conversion functions) pointer of typechar*(1,3,5) orwchar_t*(2,4,6), accordingly.
Function discards any whitespace characters (as determined bystd::isspace) until first non-whitespace character is found. Then it takes as many characters as possible to form a valid floating-point representation and converts them to a floating-point value. The valid floating-point value can be one of the following:
e orE followed with optional minus or plus sign and nonempty sequence of decimal digits (defines exponent to base10)0x or0Xp orP followed with optional minus or plus sign and nonempty sequence of decimal digits (defines exponent to base2)INF orINFINITY ignoring caseNAN orNAN(char_sequence ) ignoring case of theNAN part.char_sequence can only contain digits, Latin letters, and underscores. The result is a quiet NaN floating-point value.Ifpos is not a null pointer, thenptr will receive the address of the first unconverted character instr.c_str(), and the index of that character will be calculated and stored in*pos, giving the number of characters that were processed by the conversion.
Contents |
| str | - | the string to convert |
| pos | - | address of an integer to store the number of characters processed |
The string converted to the specified floating point type.
std::invalid_argument if no conversion could be performed.
std::out_of_range if the converted value would fall out of the range of the result type or if the underlying function (std::strtof,std::strtod orstd::strtold) setserrno toERANGE.
| This section is incomplete Reason: no example |
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2009 | C++11 | std::out_of_range would not be thrown if the converted value would fall out of the range of the result type | will throw |
| LWG 2403 | C++11 | stof calledstd::strtod orstd::wcstod | stof callsstd::strtof orstd::wcstof |
(C++11)(C++11)(C++11) | converts a string to a signed integer (function)[edit] |
(C++11)(C++11) | converts a string to an unsigned integer (function)[edit] |
(C++17) | converts a character sequence to an integer or floating-point value (function)[edit] |