È ovvio che venga fuori il codice ASCII di quel carattere... cosa vuoi che ci sia memorizzato in una variabile char?
Se ho capito quello che vuoi fare allora devi fare così:
codice:
int intero;
char carattere;
if(carattere>='0' && carattere<='9')
    intero = (int)(carattere - '0');
else
    cout<<"Carattere non valido";
.