# HELP - how to convert a string representation of a number to a number ?

Discussion in 'C++' started by cpptutor2000@yahoo.com, May 21, 2005.

1. ### Guest

Suppose I have a string representation of a very large number
as: char *strNum = "1234";

now suppose I want to store this number with each digit as an
element of a large array: unsigned int Num[4];

Now I want to transfer them digit by digit to the unsigned int
array, with code as the following, but it does NOT work.

for(int i = 0; i < 4; i++){
if(isdigit(strNum) Num = strNum;
}

If I now print out the contents of the array Num, I get only
the ASCII values to be printed out, in this case:
49, 50, 51, 52

How do I make sure that the values stored are the digits 1, 2,
3 and 4, and NOT the ASCII values.

Could someone please point out what exactly I am doing wrong?

, May 21, 2005

2. ### Larry I SmithGuest

Re: HELP - how to convert a string representation of a number toa number ?

wrote:
> Suppose I have a string representation of a very large number
> as: char *strNum = "1234";
>
> now suppose I want to store this number with each digit as an
> element of a large array: unsigned int Num[4];
>
> Now I want to transfer them digit by digit to the unsigned int
> array, with code as the following, but it does NOT work.
>
> for(int i = 0; i < 4; i++){
> if(isdigit(strNum) Num = strNum;
> }
>
> If I now print out the contents of the array Num, I get only
> the ASCII values to be printed out, in this case:
> 49, 50, 51, 52
>
> How do I make sure that the values stored are the digits 1, 2,
> 3 and 4, and NOT the ASCII values.
>
> Could someone please point out what exactly I am doing wrong?
>

IF you only have to handle ASCII chars, this will work:

if(isdigit(strNum) Num = strNum - 48;

It may not work with charsets other than ASCII.

Regards,
Larry

--

Larry I Smith, May 21, 2005

3. ### Jakob BielingGuest

"Larry I Smith" <> wrote in message
news:lyJje.823\$yO1.615@trnddc05

> IF you only have to handle ASCII chars, this will work:
>
> if(isdigit(strNum) Num = strNum - 48;
>
> It may not work with charsets other than ASCII.

Doesn't the Standard guarantee, that the numbers 0-9 of the
character set will be continous? I think I read that somewhere, but I am
not sure. If so, the above would be portable, if you used '0' instead of
48:

if(isdigit(strNum) Num = strNum - '0';

Maybe someone can verify if my above statement is correct.

regards
--
jb

Jakob Bieling, May 21, 2005
4. ### Chris TheisGuest

Re: HELP - how to convert a string representation of a number toa number ?

Jakob Bieling wrote:
> "Larry I Smith" <> wrote in message
> news:lyJje.823\$yO1.615@trnddc05
>
>
>>IF you only have to handle ASCII chars, this will work:
>>
>> if(isdigit(strNum) Num = strNum - 48;
>>
>>It may not work with charsets other than ASCII.

>
>
> Doesn't the Standard guarantee, that the numbers 0-9 of the
> character set will be continous? I think I read that somewhere, but I am
> not sure. If so, the above would be portable, if you used '0' instead of
> 48:
>
> if(isdigit(strNum) Num = strNum - '0';
>
> Maybe someone can verify if my above statement is correct.
>
> regards

Yes Jakob, you're right. The standard mandates that the value of each
character in the list of decimal digits starting from '0' shall be
greater than the previous by one .

Cheers
Chris

Chris Theis, May 21, 2005
5. ### Larry I SmithGuest

Re: HELP - how to convert a string representation of a number toa number ?

Jakob Bieling wrote:
> "Larry I Smith" <> wrote in message
> news:lyJje.823\$yO1.615@trnddc05
>
>>IF you only have to handle ASCII chars, this will work:
>>
>> if(isdigit(strNum) Num = strNum - 48;
>>
>>It may not work with charsets other than ASCII.

>
> Doesn't the Standard guarantee, that the numbers 0-9 of the
> character set will be continous? I think I read that somewhere, but I am
> not sure. If so, the above would be portable, if you used '0' instead of
> 48:
>
> if(isdigit(strNum) Num = strNum - '0';
>
> Maybe someone can verify if my above statement is correct.
>
> regards

Does that apply to the EBCDIC charset? Actually it does.

You may be correct (that 0-9 must be contiguous per the Std).
Even if they're not, your approach still works fine for ASCII
(and is a better solution).

Larry

--

Larry I Smith, May 21, 2005
6. ### Pete BeckerGuest

Re: HELP - how to convert a string representation of a number toa number ?

Larry I Smith wrote:

>
> You may be correct (that 0-9 must be contiguous per the Std).

It is required for both C and C++.

--

Pete Becker
Dinkumware, Ltd. (http://www.dinkumware.com)

Pete Becker, May 21, 2005