Конвертировать один символ в int - PullRequest
9 голосов
/ 26 ноября 2009

Как я могу преобразовать char a [0] в int b [0], где b - пустой динамически размещаемый массив int

Я пытался

char a[] = "4x^0";
int *b;
b = new int[10];
char temp = a[0]; 
int temp2 = temp - 0;
b[0] = temp2;

Я хочу 4, но это дает мне значение ASCII 52

Также делает

a[0] = atoi(temp);

дает мне ошибка: неверное преобразование из «char» в «const char *» инициализирующий аргумент 1 из int atoi (const char *) ’

Ответы [ 3 ]

25 голосов
/ 26 ноября 2009

Вам нужно сделать:

int temp2 = temp - '0';

вместо.

1 голос
/ 26 ноября 2009

Версия atoi () не работает, потому что atoi () работает со строками, а не с отдельными символами. Так что это будет работать:

char a[] = "4";
b[0] = atoi(a);

Обратите внимание, что у вас может возникнуть соблазн сделать: atoi (& Temp) но это не сработает, так как & temp не указывает на строку с нулевым символом в конце.

0 голосов
/ 26 ноября 2009

Вы можете заменить всю последовательность:

char a[] = "4x^0";
int *b;
b = new int[10];
char temp = a[0]; 
int temp2 = temp - 0;
b[0] = temp2;

с более простым:

char a[] = "4x^0";
int b = new int[10];
b[0] = a[0] - '0';

Нет необходимости возиться с временными переменными. Причина, по которой вам нужно использовать '0' вместо 0, заключается в том, что первым является символ '0', который имеет значение 48, а не значение 0.

...