|
Программирование >> Структурное программирование
Строка 1000000 преобразуется в значение типа long, равное 1000000 Преобразованное значение, деленное на 2, равно 500000 Рис. 16.23. Использование функции atoi Функция strtod (рис. 16.24) преобразует последовательность символов, представляющую собой значение с плавающей точкой, в значение типа double. Эта функция принимает два аргумента: строку типа char * и указатель на строку. Переданная строка содержит последовательность символов, которые должны быть преобразованы к типу double. Второму аргументу присваивается позиция первого символа после преобразованного фрагмента строки. Оператор d = strtod(string, SstringPtr); из программа, приведенной на рис. 16.24, определяет, что переменной d присваивается значение типа double, преобразованное из переменной string, а &stringPtr присваивается позиция первого символа в string после преобразованного значения (51.2). Использование strtod iinclude <iostream.h> iinclude <stdlib.h> main 0 { double d; char *string = 51.2% принято , *stringPtr; d = strtod(string, &stringPtr); Jii cout Строка \ string Q \ преобразуется в значение \n типа double d и строку \ stringPtr \ endl; return 0; Рис. 16.24. Использование функции strtod (часть 1 из 2) Функция atoi (рис. 16.23) преобразует свой аргумент - строку цифр, представляющую собой длинное целое, в значение типа long. Функция возвращает значение типа long. Если преобразование невозможно, поведение функции atoi не определено. Если значения типа int и типа long хранятся в области памяти размером 4 байта, то функции atoi и atoi работают одинаково. I Использование atoi iinclude <iostream.h> iinclude <stdlib.h> main () { long 1 = atoi( 1000000 ); cout Строка \ 1000000\ преобразуется << в значение типа long, равное << 1 << \пПреобразованное значение, деленное на 2, равно (1/2) endl; return 0; Функция strtol (рис.16.25) преобразует в значение тина long последовательность символов, представляющую собой целое значение. Функция принимает три аргумента: строку типа char *, указатель на строку и целое значение. Строка состоит из символьной последовательности, которая должна быть преобразована. Второму аргументу присваивается позиция первого символа после преобразованного фрагмента строки. Целое значение задает основание системы счисления, используемое при преобразовании. Оператор X = strtol(string, SremainderPtr, 0); В программе, приведенной а рис. 16.25, определяет, что переменной х присваивается значение типа long, преобразованное из переменной string. Второму аргументу &remainderPtr присваивается остаток строки string после преобразования первой лексемы. Использование для второго аргумента значения NULL приводит к тому, что остаток строки игнорируется. Третий аргумент О показывает, что преобразовываемое значение может быть представлено в восьмеричном (основание 8), десятичном (основание 10) или шестнадцатеричном (основание 16) форматах. Основание может принимать значение О или любое значение между 2 и 36. Подробные сведения о восьмеричной, шестнадцатеричной и двоичной системах счисления вы можете получить в приложении Г, Системы счисления . В представлении целых чисел по основаниям от 11 до 36 используются символы A-Z, которые отражают значения от 10 до 35. Например, шестнадцатеричное значение может включать цифры 0-9 и символы A-F. При основании 11 число может включать цифры 0-9 и символ А. При основании 24 число может включать цифры 0-9 и символы A-N. При основании 36 целое может включать цифры 0-9 и символы A-Z. Использование strtol iclude <iostream.h> #include <stdlib.h> long x; char *string = -1234567abc , *remainderPtr; X = strtol(string, SremainderPtr, 0); cout << Первоначальная строка: \ string \ \пПреобразованное значение равно x << ХпОстаток первоначальной строки: \ remainderPtr << \ ХпПреобразованное значение плюс 567 равно (х + 567) << endl; return 0; Строка 51.2% принято преобразуется в значение типа double 51.2 и строку % принято Рис. 16.24. Использование функции strtod (часть 2 из 2) Использование strtoul V*i #include <iostream.h> #include <stdlib.h> mam { T Pro- long x; char *string = 1234567abc , *remainderPtr; x = strtoul(string, sremainderPtr, 0); cout << Первоначальная строка: \ << string \ \пПреобразованное значение равно << x << ХпОстаток первоначальной строки: \ << remainderPtr << \ ХпПреобразованное значение минус 567 равно (X - 567) endl; return 0; Первоначальная строка: 12345б7аЬс Преобразованное значение равно 1234567 Остаток первоначальной строки: аЬс Преобразованное значение минус 567 равно 1234000 Рис. 16.26. Использование функции strtoul 16.11. Функции поиска из библиотеки обработки строк в этом разделе описаны функции из библиотеки обработки строк, используемые для поиска символов и подстрок в строках. Эти функции собраны в таблице на рис. 16.27. Обратите внимание, что функции strcspn и strspn возвращают значение типа size t. Тип size t определен в стандарте как целый тип значения, возвращаемого операцией sizeof. Первоначальная строка: -12345б7г0ос Преобразованное значение равно -1234567 Остаток первоначальной строки: аЬс Преобразованное значение плюс 567 равно-1234000 Рис. 16.25. Использование функции strtol (часть 2 из 2) Функция strtoul (рис. 16.26) преобразует заданную последовательность символов, представляющую целое типа unsigned long, в соответствующее значение типа unsigned long. Эта функция работает идентично функции strtol. Оператор X = strtoul (string, sremainderPtr, 0); в программе на рис. 16.26 определяет, что переменной х присваивается значение типа unsigned long, преобразованное из переменной string. Второму аргументу &remainderPtr присваивается остаток строки string после преобразования. Третий аргумент О показывает, что преобразовываемое значение может быть представлено в восьмеричном, десятичном или шестнадцатеричном форматах.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |