Q: How to convert a numeric type to a string?
A:
The old C method (deprecated):
See 'sprintf()' in e.g. MSDN for further details.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);
Using 'CString':
The format specifiers are the same as for 'sprintf()'. See the 'CString' documentation in MSDN - it is fairly straight forward.Code:int i = 1234; CString cs; cs.Format("%d", i);
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:
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.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 */




Reply With Quote