Nie wyjaśniłeś tego za dobrze ;) A wystarczyłoby podać przykład
Załóżmy, że masz string s = "12345" i chcesz aby s[0] po konwersji na int miało wartość 1, s[1] wartość 2, itd.
Jak słusznie zauważyłeś int(s[i]) zwraca kod litery w ASCII, jeżeli chcesz wykonać konwersję ręcznie i nie zależy ci ci na kontroli błędów, to wystarczy że od danego znaku odejmiesz 48 (zawsze też możesz sprawdzać czy dany znak nie wykracza poza konkretny zakres):
int d = int(s[i]) - 48;
Ewentualnie możesz skorzystać z np funkcji stoi http://www.cplusplus.com/reference/string/stoi/