Numerical value of a string

Discussion in 'C++' started by farah727rash@gmail.com, Oct 13, 2006.

  1. Guest

    Hi all,

    I am trying to find the numerical value of a string that stores a two
    digit number. I have found the numerical value of a char as:

    char character;
    cin >> character;
    int number = character - 48; // Computing the numberical value of
    character entered
    cout << "The number you entered is: " << number << endl << endl;

    How do I do the same and find the numerical value of a string storing 2
    digits? I know a way to do this using character arrays:
    for ( ; *str != '\0' ; str++)
    num = (num * 10) + (*str - 48);

    But, I am not supposed to use if statements, character arrays,
    apstrings, or atoi in this program.

    I am stumped. Any ideas?

    Thanks,
    Farah.
     
    , Oct 13, 2006
    #1
    1. Advertising

  2. mlimber Guest

    wrote:
    > I am trying to find the numerical value of a string that stores a two
    > digit number. I have found the numerical value of a char as:
    >
    > char character;
    > cin >> character;
    > int number = character - 48; // Computing the numberical value of
    > character entered
    > cout << "The number you entered is: " << number << endl << endl;
    >
    > How do I do the same and find the numerical value of a string storing 2
    > digits? I know a way to do this using character arrays:
    > for ( ; *str != '\0' ; str++)
    > num = (num * 10) + (*str - 48);
    >
    > But, I am not supposed to use if statements, character arrays,
    > apstrings, or atoi in this program.
    >
    > I am stumped. Any ideas?


    See this FAQ:

    http://www.parashift.com/c -faq-lite/misc-technical-issues.html#faq-39.2

    Cheers! --M
     
    mlimber, Oct 13, 2006
    #2
    1. Advertising

  3. Tom Smith Guest

    mlimber wrote:
    > wrote:
    >> I am trying to find the numerical value of a string that stores a two
    >> digit number.

    >
    > See this FAQ:
    >
    > http://www.parashift.com/c -faq-lite/misc-technical-issues.html#faq-39.2
    >
    > Cheers! --M
    >


    Before c.l.c++ I had never seen a group whose FAQs were quite so FA, if you see
    what I mean... This one seems to come up every 2 days, along with "I need to
    write a dynamic array". I actually discovered the group through the FAQ, which
    is still pretty much my first point of reference when something won't work.

    Tom
     
    Tom Smith, Oct 13, 2006
    #3
  4. Guest

    But, I am not supposed to use if statements, character arrays,
    apstrings, or atoi in this program. That's why I can't hit on any other
    way to do this.

    On Oct 13, 9:58 am, "mlimber" <> wrote:
    > wrote:
    > > I am trying to find the numerical value of a string that stores a two
    > > digit number. I have found the numerical value of a char as:

    >
    > > char character;
    > > cin >> character;
    > > int number = character - 48; // Computing the numberical value of
    > > character entered
    > > cout << "The number you entered is: " << number << endl << endl;

    >
    > > How do I do the same and find the numerical value of a string storing 2
    > > digits? I know a way to do this using character arrays:
    > > for ( ; *str != '\0' ; str++)
    > > num = (num * 10) + (*str - 48);

    >
    > > But, I am not supposed to use if statements, character arrays,
    > > apstrings, or atoi in this program.

    >
    > > I am stumped. Any ideas?See this FAQ:

    >
    > http://www.parashift.com/c -faq-lite/misc-technical-issues.html#faq-...
    >
    > Cheers! --M
     
    , Oct 13, 2006
    #4
  5. Rolf Magnus Guest

    wrote:

    > Hi all,
    >
    > I am trying to find the numerical value of a string that stores a two
    > digit number. I have found the numerical value of a char as:
    >
    > char character;
    > cin >> character;
    > int number = character - 48; // Computing the numberical value of
    > character entered


    The result of this is implementation-defined. A portable version would be:

    int number = character - '0';

    You should also add some error handling.

    > cout << "The number you entered is: " << number << endl << endl;
    >
    > How do I do the same and find the numerical value of a string storing 2
    > digits? I know a way to do this using character arrays:
    > for ( ; *str != '\0' ; str++)
    > num = (num * 10) + (*str - 48);
    >
    > But, I am not supposed to use if statements, character arrays,
    > apstrings, or atoi in this program.
    >
    > I am stumped. Any ideas?


    I have no idea what "apstrings" are, but you could use a stringstream, like:

    char character;
    std::stringstream stream;
    std::cin >> character;
    stream << character;
    std::cin >> character;
    stream << character;
    int number;
    stream >> number;

    (add some error handling)
     
    Rolf Magnus, Oct 13, 2006
    #5
  6. LR Guest

    wrote:

    Please don't top post.

    > But, I am not supposed to use if statements,


    What about while or for?

    character arrays,
    > apstrings, or atoi in this program. That's why I can't hit on any other
    > way to do this.


    apstrings? Is this the thing that was written a few years ago for the
    AP comp sci test? Not part of standard C++.

    >
    > On Oct 13, 9:58 am, "mlimber" <> wrote:
    >
    >> wrote:
    >>
    >>>I am trying to find the numerical value of a


    >>>>string

    Let's consider the word string. If in fact you're supposed to do this,
    then perhaps you are supposed to use the std::string class? If not,
    then perhaps the problem is misleadingly worded?

    Have you looked into std::istringstream?


    >>>>that stores a two
    >>>digit number. I have found the numerical value of a char as:

    >>
    >>>char character;
    >>>cin >> character;
    >>>int number = character - 48; // Computing the numberical value of


    Might
    const int number = character - '0';
    be better?

    Shouldn't you check to see if the number is a digit before you do that?


    >>>character entered
    >>>cout << "The number you entered is: " << number << endl << endl;

    >>
    >>>How do I do the same and find the numerical value of a string storing 2
    >>>digits? I know a way to do this using character arrays:
    >>>for ( ; *str != '\0' ; str++)
    >>> num = (num * 10) + (*str - 48);


    Where I assume that you had something like:
    char str[BIGENOUGH];

    How did you plan on putting decimal digits into str?



    >>>But, I am not supposed to use if statements, character arrays,
    >>>apstrings, or atoi in this program.



    Why not?

    LR
     
    LR, Oct 13, 2006
    #6
  7. Ron Natalie Guest


    >
    > I have no idea what "apstrings" are, but you could use a stringstream, like:


    apstrings were part of some classes that the Computer Science AP test
    used up until they switched the programming tasks to Java around 2003.
    They ap* classes were horrendous and not intended to be used other
    than for teaching purposes for the test.
     
    Ron Natalie, Oct 13, 2006
    #7
  8. David Harmon Guest

    On 13 Oct 2006 07:42:44 -0700 in comp.lang.c++, "" <> wrote,
    >But, I am not supposed to use if statements, character arrays,
    >apstrings, or atoi in this program. That's why I can't hit on any other
    >way to do this.


    Do you have a list of things you _are_ supposed to use, or has your instructor got his head [censored]? How about strtol(), sscanf()
    or std::istringstream?

    int a(char *c, int v) {
    return *c?a(c+1,v*10+(*c-'0')):v;
    }

    int main(int ac, char** av)
    {
    for(int ax=1; ax<ac; ++ax)
    cout << a(av[ax],0) << '\n';
    }
     
    David Harmon, Oct 13, 2006
    #8
  9. Bo Yang Guest

    wrote:
    > Hi all,
    >
    > I am trying to find the numerical value of a string that stores a two
    > digit number. I have found the numerical value of a char as:
    >
    > char character;
    > cin >> character;
    > int number = character - 48; // Computing the numberical value of
    > character entered
    > cout << "The number you entered is: " << number << endl << endl;
    >
    > How do I do the same and find the numerical value of a string storing 2
    > digits? I know a way to do this using character arrays:
    > for ( ; *str != '\0' ; str++)
    > num = (num * 10) + (*str - 48);
    >
    > But, I am not supposed to use if statements, character arrays,
    > apstrings, or atoi in this program.
    >

    I think you can use the boost::lexical_cast

    std::string ch ;
    cin >> ch ;
    int number = boost::lexical_cast<int>(ch) ;

    It is just simple !
     
    Bo Yang, Oct 14, 2006
    #9
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    3
    Views:
    625
    Oliver Wong
    Dec 5, 2006
  2. Replies:
    3
    Views:
    311
  3. Aman JIANG
    Replies:
    18
    Views:
    671
    Kai-Uwe Bux
    Sep 23, 2007
  4. Peter Graf
    Replies:
    1
    Views:
    540
    user923005
    May 21, 2008
  5. rajesh
    Replies:
    0
    Views:
    191
    rajesh
    Nov 23, 2005
Loading...

Share This Page