Numerical value of a string

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

  1. farah727rash

    farah727rash 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?

    farah727rash, Oct 13, 2006
    1. Advertisements

  2. farah727rash

    mlimber Guest

    See this FAQ:

    Cheers! --M
    mlimber, Oct 13, 2006
    1. Advertisements

  3. farah727rash

    Tom Smith Guest

    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 Smith, Oct 13, 2006
  4. farah727rash

    farah727rash 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.
    farah727rash, Oct 13, 2006
  5. farah727rash

    Rolf Magnus Guest

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

    int number = character - '0';

    You should also add some error handling.
    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
  6. farah727rash

    LR Guest


    Please don't top post.
    What about while or for?

    character arrays,
    apstrings? Is this the thing that was written a few years ago for the
    AP comp sci test? Not part of standard C++.
    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?

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

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

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

    How did you plan on putting decimal digits into str?

    Why not?

    LR, Oct 13, 2006
  7. farah727rash

    Ron Natalie Guest

    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
  8. farah727rash

    David Harmon Guest

    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
  9. farah727rash

    Bo Yang Guest

    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
    1. Advertisements

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.