Прототип функции strtod:
double strtod( const char * string, char ** endptr );
Название | Язык |
---|---|
stdlib.h | С |
cstdlib | С++ |
Описание
Функция strtod
преобразовывает строку string
в double
. Анализируя строку string
, strtod
интерпретирует её содержимое в число типа double
. Если endptr
не является нулевым указателем, то функция устанавливает значение endptr
на первый символ после числа.
Функция сначала отбрасывает пробелы по мере необходимости, до тех пор, пока не будет найден первый символ, отличный от символа пробела. Затем, начиная с этого символа, strtod
берет столько символов, сколько возможно. То есть, пока литерал в строке напоминает синтаксис чисел с плавающей точкой, функция его считывает и интерпретирует в числовое значение. Остальная часть строки, после последнего допустимого символа игнорируется и никак не влияет на поведение этой функции. Указатель на остаток строки после последнего допустимого символа хранится в блоке памяти, на который указывает endptr
.
Допустимое число с плавающей точкой формируется функцией strtod
из следующих символов:
- Знаки плюс и минус;
- Последовательность цифр, которые могут содержать десятичную точку;
- Число записанное в экспоненциальной форме, такая форма может содержать символы
e
илиE
за которыми следуют знаки, плюс или минус, и последовательность цифр.
Если первая последовательность не пробельных символов в строке string
не формируют правильное число с плавающей точкой, или строка string
содержит только пробельные символы, то преобразование строки в число не выполняется.
Параметры:
- string
Начальная строка для преобразования в значения типаdouble
. - endptr
Ссылка на объект типаchar *
, значение которой изменяется функцией после первого вызова. Этот параметр также может быть нулевым указателем, в этом случае он не используется.
Возвращаемое значение
В случае успеха, функция возвращает преобразованное число с плавающей точкой типа double
.
Если функции не удалось преобразовать строку в число, возвращаемое значение — ноль (0,0).
Если преобразованное значение выходит за диапазон принимаемых значений, возвращается положительное или отрицательное значение HUGE_VAL
, и глобальная переменная ERRNO
устанавливается в ERANGE
.
Пример: исходный код программы
//пример использования функции strtod #include <iostream> #include <cstdlib> int main() { char szOrbits[] = "365.24 29.53"; char * ptrEnd; double d1 = strtod (szOrbits, &ptrEnd), // преобразовать первое число d2 = strtod (ptrEnd, NULL); // преобразовать второе число std::cout << "Луна совершает в год " << (d1 / d2) << " оборотов вокруг землиn"; return 0; }