Для парсинга даты посмотрите Дата:: Синтаксический анализ в CPAN.
Вместо этого вам нужно сделать:
int temp2 = temp - '0';
.
Версия atoi () не работает, потому что atoi () работает со строками, а не с отдельными символами. Так что это сработает:
char a[] = "4";
b[0] = atoi(a);
Обратите внимание, что у вас может возникнуть соблазн сделать: атой (& темп) но это не сработает, поскольку & temp не указывает на строку с завершающим нулем.
Вы можете заменить всю последовательность:
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.