There are some character tables (ASCII, EBCDIC, ....), and you can't
assume what position occupies numeric characters. But in practice, in
all examples I know they have consecutive positions.
If you assume that, you can calcule offset with the first element:
Example:
You can get value 0 with the operation 0 - '0'
Then you can write your own sentence:
return c-'0'
I can't assure that in all the cases, numbers are consecutive in any
codification, but in all cases I know, they are.
There are other alternatives:
- using C's sscanf, but you must use a null terminating string
- using stringstream (you can construct a stringstream and then use the
operator >> )
Tomás wrote:
I have a Graphical User Interface program and I'm working with numbers
written in base-10.
Is there a better way than the following to get the digit value?
unsigned GetDigitValue( char const c )
{
switch ( c )
{
case '0': return 0;
case '1': return 1;
case '2': return 2;
case '3': return 3;
case '4': return 4;
case '5': return 5;
case '6': return 6;
case '7': return 7;
case '8': return 8;
case '9': return 9;
}
}
Any reason why the above code wouldn't be fully portable?
-Tomás