Функции преобразования из строкового формата в числовой



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

Поделиться с друзьями:






Мы поможем в написании ваших работ!