C++ String: How to convert a numeric type to a string?
Q: How to convert a numeric type to a string?
A:
The old C method (deprecated):
Code:
char c[10]; // simply large enough - don't forget the
// extra byte needed for the trailing '\0'
int i = 1234;
sprintf(c, "%d", i);
See 'sprintf()' in e.g. MSDN for further details.
Using 'CString':
Code:
int i = 1234;
CString cs;
cs.Format("%d", i);
The format specifiers are the same as for 'sprintf()'. See the 'CString' documentation in MSDN - it is fairly straight forward.
A word of warning: mismatching the format specifiers ('%d') and the actually passed parameters will lead to unpredictable results, both for 'sprintf()' and for 'CString::Format()'.
The C++ way:
Following sample shows a template function that uses Standard C++ classes to complete the task:
Code:
#include <string>
#include <sstream>
#include <iostream>
template <class T>
std::string to_string(T t, std::ios_base & (*f)(std::ios_base&))
{
std::ostringstream oss;
oss << f << t;
return oss.str();
}
int main()
{
// the second parameter of to_string() should be one of
// std::hex, std::dec or std::oct
std::cout<<to_string<long>(123456, std::hex)<<std::endl;
std::cout<<to_string<long>(123456, std::oct)<<std::endl;
return 0;
}
/* output:
1e240
361100
*/
This method is not only very elegant, but also type safe, because the compiler will pick the proper 'std::ostringstream::operator <<()' at compile time, according to the operand type.
<br><br>
Re: C++ String: How to convert a numeric type to a string?
Another method is top use itoa() function that is there in many Windows compilers. I myself have tested in Dev-C++ and VC++