By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,796 Members | 1,148 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,796 IT Pros & Developers. It's quick & easy.

Numerical value of a string

P: n/a
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 '06 #1
Share this Question
Share on Google+
8 Replies


P: n/a
fa**********@gmail.com 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-lit....html#faq-39.2

Cheers! --M

Oct 13 '06 #2

P: n/a
mlimber wrote:
fa**********@gmail.com 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-lit....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
Oct 13 '06 #3

P: n/a
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" <mlim...@gmail.comwrote:
farah727r...@gmail.com 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-lit...sues.html#faq-...

Cheers! --M
Oct 13 '06 #4

P: n/a
fa**********@gmail.com 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)

Oct 13 '06 #5

P: n/a
LR
fa**********@gmail.com 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" <mlim...@gmail.comwrote:
>>farah727r...@gmail.com 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


Oct 13 '06 #6

P: n/a
>
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.
Oct 13 '06 #7

P: n/a
On 13 Oct 2006 07:42:44 -0700 in comp.lang.c++, "fa**********@gmail.com" <fa**********@gmail.comwrote,
>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';
}

Oct 13 '06 #8

P: n/a

fa**********@gmail.com 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 !

Oct 14 '06 #9

This discussion thread is closed

Replies have been disabled for this discussion.