std::atoi
будет обрабатывать ввод как char const *
и попытаться преобразовать из этой позиции в нулевой терминатор.
В этом случае
int x = std::atoi(&myString.at(0));
строка 1T23
преобразуется в int
. Поскольку это преобразование невозможно, вы получите результат 0
.
Для других случаев:
int y = std::atoi(&myString.at(2)); // converts "23" to 23
int z = std::atoi(&myString.at(3)); // converts "3" to 3
Фактические числа можно получить с помощью std::stoi
и с использованием соответствующих подстрок. В качестве альтернативы, поскольку вам нужны только однозначные цифры, вы можете индексировать строку и вычитать '0'
. Другие ответы показывают, как именно это сделать.