Функции преобразования из строкового формата в числовой
Функции преобразования: 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-05; просмотров: 519; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!