This question is asked quite often, so here is a way of doing it using
stringstreams:
number to string
1 2 3 4 5 6 7 8 9 10
|
int Number = 123;//number to convert int a string
string Result;//string which will contain the result
stringstream convert; // stringstream used for the conversion
convert << Number;//add the value of <b>Number</b> to the characters in the stream
Result = convert.str();//set <b>Result</b> to the content of the stream
//<b>Result</b> now is equal to <b>"123"</b>
| |
string to number
1 2 3 4 5 6 7 8
|
string Text = "456";//string containing the number
int Result;//number which will contain the result
stringstream convert(Text); // stringstream used for the conversion initialized with the contents of <b>Text</b>
if ( !(convert >> Result) )//give the value to <b>Result</b> using the characters in the string
Result = 0;//if that fails set <b>Result</b> to <b>0</b>
//<b>Result</b> now equal to <b>456</b>
| |
Simple functions to do these conversions
1 2 3 4 5 6 7
|
template <typename T>
string NumberToString ( T Number )
{
stringstream ss;
ss << Number;
return ss.str();
}
| |
1 2 3 4 5 6 7
|
template <typename T>
T StringToNumber ( const string &Text )//<b>Text</b> not by const reference so that the function can be used with a
{ //character array as argument
stringstream ss(Text);
T result;
return ss >> result ? result : 0;
}
| |
Other ways:
Boost
http://www.boost.org/doc/libs/1_38_0/libs/conversion/lexical_cast.htm
C library
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf.html
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa.html
http://www.cplusplus.com/reference/clibrary/cstdlib/atoi.html
http://www.cplusplus.com/reference/clibrary/cstdlib/atol.html
http://www.cplusplus.com/reference/clibrary/cstdlib/atof.html
http://www.cplusplus.com/reference/clibrary/cstdlib/strtol.html
http://www.cplusplus.com/reference/clibrary/cstdlib/strtoul.html
http://www.cplusplus.com/reference/clibrary/cstdlib/strtod.html
( I explain better with code examples than with words )