Problem: I have an integer; this integer needs to be converted to a stl::string type.
In the past, I've used stringstream
to do a conversion, and that's just kind of cumbersome. I know the C way is to do a sprintf
, but I'd much rather do a C++ method that is typesafe(er).
Is there a better way to do this?
Here is the stringstream approach I have used in the past:
std::string intToString(int i) { std::stringstream ss; std::string s; ss << i; s = ss.str(); return s; }
Of course, this could be rewritten as so:
template<class T> std::string t_to_string(T i) { std::stringstream ss; std::string s; ss << i; s = ss.str(); return s; }
However, I have the notion that this is a fairly 'heavy-weight' implementation.
Zan noted that the invocation is pretty nice, however:
std::string s = t_to_string(my_integer);
At any rate, a nicer way would be... nice.
Related:
Alternative to itoa() for converting integer to string C++?
sprintf() Function to Convert an Integer to a String in C This function gives an easy way to convert an integer to a string. It works the same as the printf() function, but it does not print a value directly on the console but returns a formatted string.
int atoi (const char * str);
Now in c++11 we have
#include <string> string s = std::to_string(123);
Link to reference: http://en.cppreference.com/w/cpp/string/basic_string/to_string
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With