Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Функции преобразования: atoi, atol, atof
Строковое представление числа в числовой формат. Выполниться верно, если строковое представление числа записано по правилам представления числа. Если число начинается с цифр и в числе есть символы, отличные от цифр и знака, то выдаст неверный результат, число до символа, не допустимого в числе. int a=atoi("123"); //в формат int long l=atol("123456"); // в формат long double d=atof("123.45");//в формат вещественного Пример применния функций для корректного и некорректного преобразования int _tmain(int argc, _TCHAR* argv[]) { int x; char str[5]="124";//правильное число, резульат 124 x=atoi(str); cout<<x<<'\n'; char str1[5]="12a4";//неверно представлено число,результат=12 x=atoi(str1); cout<<x<<'\n'; } Результат Функции преобразования: strtod, strtol double strtod(const char *s, char **ch); Преобразует число из s в формат вещественного, формирует код завершения и записывает результат преобразования в ch – текст – первый символ, который не допустим в записи числа. Пример корректного и некорректного преобразования и применение при проверке ввода числовых данных. // convert_chislo.cpp: определяет точку входа для консольного приложения. //
#include "stdafx.h" #include "string.h" #include "iostream" using namespace std;
int _tmain(int argc, _TCHAR* argv[]) {
char str2[5]="12.4"; char *ss; double y=strtod(str2,&ss); if(!(strcmp(ss,""))) //если выполнено преобразование, т.е.*ss пусто { cout<<"y="<<y; }else { cout<<"ss="<<ss<<' '<<"y="<<y; } cout<<'\n'; char str3[5]="12a4"; y=strtod(str3,&ss); if(!(strcmp(ss,""))) { cout<<"y="<<y; }else //если не выполнено преобразование, т.е.*ss не пусто { cout<<"ss="<<*ss<<' '<<"y="<<y; } } Результат
double strtol(const char *s, char **ch, int R); Преобразует число из s в вещественный формат с учетом системы счисления R. Функция возвращает вещественное число в системе счисления R, если код завершения в ch равен пусто, иначе в ch символ.
Преобразование из числового формата в строковый : sprint, itoa, ltoa, utoa, ultoa 1) sprintf(char *s, const char *format, выражение числового формата); Выражение числового формата преобразуется по format в s. Пример преобразования числа, заданного в формате format , в строковый формат {char buffer[12];unsigned int value = 12345678ul; sprintf(buffer, "%lu", value );} После чего в массиве buffer лежит требуемая строка. Но, sprintf это функция форматированного вывода, которая много чего умеет и тянет за собой много других функций стандартной библиотеки. Размер машинного кода при ее использовании увеличивается значительно. 2) Функции itoa, ltoa, utoa, ultoa В состав библиотек, поставляемых с компиляторами, часто включают функции преобразования числа в строку itoa, ltoa, utoa, ultoa. Эти функции не стандартные, но часто имеются в наличии в stdlib.h, в отличии от sprintf, не делают ничего лишнего. Функция itoa возвращает указатель на string. Формат функции: char *itoa( int value, char * string, int radix ); где: value преобразуется в string в формате системы счисления radix. Пример применения функций char buffer[12];unsigned int value = 12345678ul; ultoa(value, buffer, 10); //в десятичную систему счисления 3) Чтобы отследить неправильное преобразование, используйте функцию _itoa_s, формат которой: char *_itoa_s( int value, char * string, int size, int radix ); где size — размер строки string. Данная функция возвращает ноль, если преобразование проходит успешно.
|
||
Последнее изменение этой страницы: 2018-04-12; просмотров: 204. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |