Перевод из char в int c++
Мне нужно перевести цифру из char в int. То есть:
char a='5';
int b;
Как сделать чтобы этот int был равен пяти?
char *a="5";
int b;
sscanf( a, "%d", &b );
Или
b = a - '0' если символы.
Запомните навсегда - во всех языках программирования приведение char к int дает вам ASCII код символа, а не переводит '1' в 1
Для того чтобы получить не код символа а само число, можно использовать функцию atoi
char a = '5';
int b = atoi(&a);
Это. по моему, наилучший способ, так как функция atoi является частью стандартной библиотеки Си <cstdlib>
А вообще есть очень много вариантов, например от тех что написали другие участники, заканчивая банальный получением ASCII кода символа и с помощью циклов и операторов ветвления получить число
P.S перед конвертацией проверь, действительно ли в char цифры, иначе int будут присвоенные "левые" значения
Например:
int b;
char a;
if((a>='0')&&(a<='9')){ b = atoi(&a); }
Примерно так:
b = (int)a - 48;