ASCII Character ASCII Code(decimal) Literal Integer
'0' 48 0
... ... ...
'9' 57 9
int(chars_and_numbers[i])
возвращает вам базовый код ASCII символа ASCII вместо целого литерала, который вы хотите.
Обычно 'i' - '0'
приводит к i
, если i
принадлежит [0, 9].
Например, , '1' - '0'
возвращает расстояния между значениями двух символов ASCII (49 - 48), что составляет 1 .
int main() {
string chars_and_numbers = "123a456b789c0";
vector<int> only_numbers;
for (int i = 0; i < chars_and_numbers.length(); i++) {
if (isdigit(chars_and_numbers[i])) {
cout << chars_and_numbers[i] << " ";
// here is what you want
only_numbers.push_back(chars_and_numbers[i] - '0');
}
}
cout << endl;
for (vector<int>::iterator i = only_numbers.begin(); i != only_numbers.end(); i++) {
cout << *i << " ";
}
return 0;
}