Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse int to string with stringstream

Tags:

c++

string

int

Well!

I feel really stupid for this question, and I wholly don't mind if I get downvoted for this, but I guess I wouldn't be posting this if I had not at least made an earnest attempt at looking for the solution.

I'm currently working on Euler Problem 4, finding the largest palindromic number of two three-digit numbers [100..999].

As you might guess, I'm at the part where I have to work with the integer I made. I looked up a few sites and saw a few standards for converting an Int to a String, one of which included stringstream.

So my code looked like this:

//  tempTotal is my int value I want converted.
void toString( int tempTotal, string &str )
{ 
    ostringstream ss;            // C++ Standard compliant method.
    ss << tempTotal;
    str = ss.str();              // Overwrite referenced value of given string.
}

and the function calling it was:

else
{
    toString( tempTotal, store );
    cout << loop1 << " x " << loop2 << "= " << store << endl; 
}

So far, so good. I can't really see an error in what I've written, but the output gives me the address to something. It stays constant, so I don't really know what the program is doing there.

Secondly, I tried .ToString(), string.valueOf( tempTotal ), (string)tempTotal, or simply store = temptotal.

All refused to work. When I simply tried doing an implicit cast with store = tempTotal, it didn't give me a value at all. When I tried checking output it literally printed nothing. I don't know if anything was copied into my string that simply isn't a printable character, or if the compiler just ignored it. I really don't know.

So even though I feel this is a really, really lame question, I just have to ask:

How do I convert that stupid integer to a string with the stringstream? The other tries are more or less irrelevant for me, I just really want to know why my stringstream solution isn't working.

EDIT:

Wow. Seriously. This is kind of embarrassing. I forgot to set my tempTotal variable to something. It was uninitialized, so therefore I couldn't copy anything and the reason the program gave me either a 0 or nothing at all.

Hope people can have a laugh though, so I think this question would now be better suited for deletion since it doesn't really serve a purpose unless xD But thanks to everybody who tried to help me!

like image 748
IAE Avatar asked Nov 24 '25 14:11

IAE


2 Answers

Have you tried just outputting the integer as is? If you're only converting it to a string to output it, then don't bother since cout will do that for you.

else
{
    // toString( tempTotal, store ); // Skip this step.
    cout << loop1 << " x " << loop2 << "= " << tempTotal << endl; 
}

I have a feeling that it's likely that tempTotal doesn't have the value you think it has.

like image 142
Eclipse Avatar answered Nov 26 '25 03:11

Eclipse


I know this doesn't directly answer your question but you don't need to write your own conversion function, you can use boost

#include <boost/lexical_cast.hpp>
using boost::lexical_cast;

//usage example
std::string s = lexical_cast<std::string>(tempTotal);
like image 39
hamishmcn Avatar answered Nov 26 '25 04:11

hamishmcn



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!