Функция strtod

Прототип функции 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;
}

Пример работы программы

CppStudio.com
Луна совершает в год 12.3684 оборотов вокруг земли
Автор: admin
Дата: 02.09.2012
Поделиться:

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.