Could someone explain why those calls are not returning the same expected result?
unsigned int GetDigit(const string& s, unsigned int pos)
{
// Works as intended
char c = s[pos];
return atoi(&c);
// doesn't give expected results
return atoi(&s[pos]);
return atoi(&static_cast<char>(s[pos]));
return atoi(&char(s[pos]));
}
Remark: I’m not looking for the best way to convert a char to an int.
None of your attempts are correct, including the “works as intended” one (it just happened to work by accident). For starters,
atoi()requires a NUL-terminated string, which you are not providing.How about the following:
This assumes that you know that
s[pos]is a valid decimal digit. If you don’t, some error checking is in order.