Справочник по функциям С++. Подпрограммы классификации Подпрограммы преобразования
Скачать 3.41 Mb.
|
strtod----------------------------------------------------------------- Назначение Преобразует строку в числовое значение типа double. Синтаксис #include double strtod(const char *s, char **endptr); Прототип в stdlib.h Замечания strtod преобразует строку символов s в число типа double. s является последовательностью символов, которая может быть интерпретирована как числовое значение типа double; символы дол- жны быть сопоставимы со следующим основным фор- матом: [ws] [sn] [ddd] [.] [ddd] [fmt[sn]ddd] где: [ws] = необязательные пробелы или табуляции; [sn] = необязательный знак (+ или -); [ddd] = необязательные цифры; [fmt] = необязательные е или Е; [.] = необязательная десятичная точка; strtod также распознает +INF и -INF как положи- тельный и отрицательный инфинитив, а также +NAN и -NAN как "нечисло". Для примера ниже приведено несколько строк, ко- торые функция strod может преобразовать в чис- ловое значение типа double: +1231.1981 е-1 502.85Е2 +2010.952 strtod прекращает чтение строки, как только ей попадается символ, который не может быть интер- претирован как составляющая часть числового значения типа double. Если endptr отлична от нуля, то strtod устанав- ливает в endptr значение указателя на символ, вызвавший останов анализа строки (*endptr = &stopper) Возвращаемое strtod возвращает значение s как double. В слу- значение чае переполнения возвращается HUGE_VAL. Переносимость strtod доступна в UNIX-системах и совместима со стандартом ANSI. См. также atof ----------------------------------------------------------------- strtok----------------------------------------------------------------- Назначение Ищет в из первой строке лексемы, которые разде- лены любым из символов, входящих во вторую строку. Синтаксис char *strtok(char *s1, const char *s2); Прототип в string.h Замечания strtok воспринимает s1 как состоящую из нуля или более текстовых лексем, разделенных между собой одним или более символом, определенными в строке s2. Первое обращение к strtok возвращает значение указателя на первый символ первой лексемы в s1 и записывает нулевой символ в s1 непосредствен- но за возвращенной лексемой. Последовательность обращений с нулевым значением первого аргумента приведет к обработке всей строки s1 до исчерпа- ния всех лексем. Строка разделителей s2 может изменяться от вы- зова к вызову. Возвращаемое strtok возвращает указатель на лексему, найден- значение ную в s1. Когда в s1 не остается больше лексем, strtok возвращает нулевой (пустой) указатель. Переносимость strtok доступна в UNIX-системах и совместима со стандартом ANSI. Пример /* Этот пример демонстрирует применение функции strtok при разборе даты. Заметим, что для раз- бора даты, представленной в различных форматах (т.е. 12/3/87; Dec.12,1987; January 15, 1988; 12-FEB-88 и т.д.), вы должны специфировать строку ограничителей содержащую вместе точку, запятую, пробел, минус или слеш. Отметим, что на выходе разделители не возвращаются. */ #include #include main () { char *ptr; ptr = strtok("FEB.14,1988",". ,-/" ); while (ptr != NULL) { printf("ptr = %s\n", ptr); ptr = strtok(NULL, ". ,-/"); } } Вывод программы ptr = FEB ptr = 14 ptr = 1988 ----------------------------------------------------------------- strtol----------------------------------------------------------------- Назначение Преобразует строку в числовое значение типа long. Синтаксис long strtol(const char *s, char **endptr, int radix); Прототип в stdlib.h Замечания strtol преобразует строку символов s в целое значение типа long. s является последователь- ностью символов, которая может быть интерпрети- рована как числовое значение типа long; она должна быть сопоставима со следующим основным форматом: [ws] [sn] [0] [x] [ddd] где: [ws] = необязательные пробелы или табуляции; [sn] = необязательный знак (+ или -); [0] = необязательный ноль (0) [x] = необязательный x или X [ddd]= необязательные цифры strtol прекращает чтение строки как только встретит первый нераспознаваемый ею символ. Если radix имеет значение между 2 и 36, то це- лочисленное значение типа long будет являтся выражением с основанием, задаваемым аргументом radix. Если значение radix равно 0, то первые несколько символов s будут определять основание преобразованного числа. ----------------------------------------------- Первый Второй Строка интер- символ символ претируется как ----------------------------------------------- 0 1-7 восьмиричное 0 x или X шестнадцатиричное 1-9 десятичное ----------------------------------------------- Если radix равно 1, то его значение считается неверным. Если radix меньше 0 или больше 36, то его значение также будет считаться неверным. Любые неверные значения radix приводят к тому, что результатом преобразования строки будет 0 и указатель на следующий символ строки *endptr будет установлен в ее начало. Если значение в s должно быть интерпретировано как восьмиричное, то любые символы вне диапозо- на от 0 до 7 не распознаются. Если значение в s должно быть интерпретировано как десятичное, то любые символы вне диапозона от 0 до 9 не распознаются. Если значение в s должно быть интерпретировано как число с любым другим основанием, то распоз- наваться будут только цифры и буквы, используе- мые в представлении числа с этим основанием. (Например, если radix = 5, то распознаваться будут только цифры от 0 до 4; если radix = 20, то распознаваться будут только цифры от 0 до 9 и буквы от A до J.) Если endptr отлична от нуля, то strtol устанав- ливает в endptr значение указателя на символ, вызвавший останов анализа строки (*endptr = &stopper) Возвращаемое strtol возвращает преобразованное числовое зна- значение чение строки или нуль при ошибке. Переносимость strtol доступна в UNIX-системах и совместима со стандартом ANSI. См. также atoi, atof, strtoul ----------------------------------------------------------------- |