• Articles
  • Converting numbers to strings and string
Published by
Apr 6, 2009 (last update: May 19, 2009)

Converting numbers to strings and strings to numbers

Score: 3.0/5 (23 votes)
*****
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 )