2013-11-21 3 views
1

Я массив, который является символ, и все они являются числами, а в типе Char означает:Преобразование цифр полукокса к междунар (же аз полукокс) в C++

myArray = ['5','6','8','9','10',....] 

, например, я wnat к добавить два из them.I должны преобразовать их в целое, а затем добавить их вместе, но с помощью:

(int)myArray[1]+(int)myArray[2] 

дать неправильный ответ. Какова функция или правильный способ для этого?

+1

«10» не символ ... – Sinkingpoint

+2

Пожалуйста, пост фактический, соответствующий код – Joe

+0

exci = использовать меня yo're право, и это была моя ошибка. извините меня – user3000968

ответ

5

Для ASCII значных символов из '0' - '9', можно вычитать значение '0', поскольку их значения являются смежными:

char digit = '7' ; //any char, from '0' ... '9' 
int value = digit - '0'; 

Дополнительная информация: Are the character digits ['0'..'9'] required to have contiguous numeric values?

+1

Для ** всех ** кодировок требуется. Это всего лишь единственное, что переносится в кодировках. –

+0

@Pete Becker: Спасибо, что указали это. Я немного прочитал, начиная с ссылки, которую я добавил. До сих пор я никогда не сомневался в переносимости моего кода в отношении буквенно-цифровых диапазонов. – Sam

+0

Я обычно заставляю людей делать ASCII-ориентированные предположения, поэтому я ценю вашу осторожность. –

1

Вы можете использовать функцию atoi, для пример:

char str[] = "122"; 
int i = atoi(str); 

Обратите внимание, что вы должны использовать двойной кавычки (") для строк. Одиночные кавычки (') работают только для символов.

Кроме того, вы должны добавить это включает:

#include <cstdlib> 
Смежные вопросы