Każdy znak w stringu jest zapisany w postaci kodu ASCII np znak '0' to 48. Wiec musisz tyle odjąć, aby z kodu ASCII otrzymać odpowiadającą cyfrę dla intów. Na szczęście nie trzeba ich wszystkich pamiętać:
int main() {
std::cout << int('a') << "\n";
std::cout << int('0') << "\n";
std::cout << int('9') << "\n";
std::cout << int('0' - 48) << "\n";
std::cout << int('9' - 48) << "\n";
std::cout << int('9' - '0') << "\n";
std::cout << int('6' - '0') << "\n";
}