std:: stof, std:: stod, std:: stold
|
Определено в заголовочном файле
<string>
|
||
|
float
stof
(
const
std::
string
&
str,
std::
size_t
*
pos
=
nullptr
)
;
|
(1) | (начиная с C++11) |
|
float
stof
(
const
std::
wstring
&
str,
std::
size_t
*
pos
=
nullptr
)
;
|
(2) | (начиная с C++11) |
|
double
stod
(
const
std::
string
&
str,
std::
size_t
*
pos
=
nullptr
)
;
|
(3) | (начиная с C++11) |
|
double
stod
(
const
std::
wstring
&
str,
std::
size_t
*
pos
=
nullptr
)
;
|
(4) | (начиная с C++11) |
|
long
double
stold
(
const
std::
string
&
str,
std::
size_t
*
pos
=
nullptr
)
;
|
(5) | (начиная с C++11) |
|
long
double
stold
(
const
std::
wstring
&
str,
std::
size_t
*
pos
=
nullptr
)
;
|
(6) | (начиная с C++11) |
Интерпретирует значение с плавающей точкой в строке str .
Пусть ptr будет внутренним (для функций преобразования) указателем типа char * (1,3,5) или wchar_t * (2,4,6) соответственно.
Функция отбрасывает любые пробельные символы (определяемые с помощью std::isspace ) до тех пор, пока не будет найден первый непробельный символ. Затем она принимает максимально возможное количество символов, формирующих корректное представление числа с плавающей точкой, и преобразует их в значение с плавающей точкой. Корректное значение с плавающей точкой может быть одним из следующих:
- десятичное выражение с плавающей запятой. Оно состоит из следующих частей:
-
- (необязательно) знак плюс или минус
- непустая последовательность десятичных цифр, возможно содержащая символ десятичной точки (определяется текущей локалью C ) (определяет мантиссу)
-
(необязательно)
eилиEс последующим необязательным знаком минус или плюс и непустой последовательностью десятичных цифр (определяет экспоненту по основанию 10 )
- шестнадцатеричное выражение с плавающей запятой. Оно состоит из следующих частей:
-
- (необязательно) знак плюс или минус
-
0xили0X - непустая последовательность шестнадцатеричных цифр, возможно содержащая символ десятичной точки (определяется текущей локалью C ) (определяет мантиссу)
-
(необязательно)
pилиPс последующим необязательным знаком минус или плюс и непустой последовательностью десятичных цифр (определяет экспоненту по основанию 2 )
- выражение бесконечности. Оно состоит из следующих частей:
-
- (необязательно) знак плюс или минус
-
INFилиINFINITYбез учёта регистра
- выражение не-число. Состоит из следующих частей:
-
- (необязательно) знак плюс или минус
-
NANилиNAN(char_sequence )без учета регистра частиNAN. char_sequence может содержать только цифры, латинские буквы и подчеркивания. Результатом является тихое значение NaN с плавающей точкой.
- любое другое выражение, которое может быть принято текущей установленной 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 | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| 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)
|
преобразует последовательность символов в целое число или число с плавающей запятой
(функция) |