std::stof, std::stod, std::stold
Defined in header <string> |
||
|---|---|---|
float stof ( const std::string& str, std::size_t* pos = nullptr ); |
(1) | (since C++11) |
float stof ( const std::wstring& str, std::size_t* pos = nullptr ); |
(2) | (since C++11) |
double stod ( const std::string& str, std::size_t* pos = nullptr ); |
(3) | (since C++11) |
double stod ( const std::wstring& str, std::size_t* pos = nullptr ); |
(4) | (since C++11) |
long double stold( const std::string& str, std::size_t* pos = nullptr ); |
(5) | (since C++11) |
long double stold( const std::wstring& str, std::size_t* pos = nullptr ); |
(6) | (since C++11) |
Интерпретирует значение с плавающей запятой в строке str.
Пусть ptr - это внутренний (для функций преобразования) указатель типа char* (1,3,5) или wchar_t* (2,4,6), соответственно.
std::strtof(str.c_str(), &ptr).std::wcstof(str.c_str(), &ptr).std::strtod(str.c_str(), &ptr).std::wcstod(str.c_str(), &ptr).std::strtold(str.c_str(), &ptr).std::wcstold(str.c_str(), &ptr).Функция игнорирует любые символы пробелов (как определено std::isspace) до первого символа, не являющегося пробелом. Затем она берёт как можно больше символов для формирования допустимого представления с плавающей запятой и преобразует их в значение с плавающей запятой. Допустимое значение с плавающей запятой может быть одним из следующих:
- десятичное представление с плавающей запятой. Оно состоит из следующих частей:
- (необязательно) знак плюс или минус
- непустая последовательность десятичных цифр, необязательно содержащая десятичную точку (как определено текущим C locale) (определяет мантиссу)
- (необязательно)
eилиE, за которыми следует необязательный знак минус или плюс и непустая последовательность десятичных цифр (определяет экспоненту по основанию 10) - шестнадцатеричное представление с плавающей запятой. Оно состоит из следующих частей:
- (необязательно) знак плюс или минус
-
0xили0X - непустая последовательность шестнадцатеричных цифр, необязательно содержащая десятичную точку (как определено текущим C locale) (определяет мантиссу)
- (необязательно)
pилиP, за которыми следует необязательный знак минус или плюс и непустая последовательность десятичных цифр (определяет экспоненту по основанию 2) - бесконечность. Она состоит из следующих частей:
- (необязательно) знак плюс или минус
-
INFилиINFINITY(регистр игнорируется) - не число. Она состоит из следующих частей:
- (необязательно) знак плюс или минус
-
NANилиNAN(последовательность_символов)(регистр частиNANигнорируется). последовательность_символов может содержать только цифры, латинские буквы и символы подчёркивания. Результатом является тихий NaN (Not a Number) с плавающей запятой. - любое другое представление, которое может быть принято текущим C locale
Если pos не является нулевым указателем, то ptr получит адрес первого необработанного символа в str.c_str(), и индекс этого символа будет рассчитан и сохранён в *pos, показывая количество обработанных символов во время преобразования.
Параметры
| str | - | преобразуемая строка |
| pos | - | адрес целого числа для хранения количества обработанных символов |
Возвращаемое значение
Строка, преобразованная в указанный тип с плавающей запятой.
Исключение
std::invalid_argument если преобразование не выполнено.
std::out_of_range если преобразованное значение выйдет за пределы диапазона результата, или если подлежащая функция (std::strtof, std::strtod или std::strtold) установит errno в ERANGE.
Пример
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение, опубликованное | Корректное поведение |
|---|---|---|---|
| LWG 2009 | C++11 |
std::out_of_range не будет выбрасываться, если преобразованноезначение выйдет за пределы диапазона результата |
будет выбрасываться |
| LWG 2403 | C++11 |
stof вызывала std::strtod или std::wcstod |
stof вызывает std::strtof или std::wcstof |
См. также
|
(C++11)(C++11)(C++11) |
преобразует строку в целое со знаком (функция) |
|
(C++11)(C++11) |
преобразует строку в целое без знака (функция) |
|
(C++17) |
преобразует последовательность символов в целое или число с плавающей точкой (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/basic_string/stof