C++ Converting to std::string


std::ostringstream can be used to convert any streamable type to a string representation, by inserting the object into a std::ostringstream object (with the stream insertion operator <<) and then converting the whole std::ostringstream to a std::string.

For int for instance:

#include <sstream>

int main()
    int val = 4;
    std::ostringstream str;
    str << val;
    std::string converted = str.str();
    return 0;

Writing your own conversion function, the simple:

template<class T>
std::string toString(const T& x)
  std::ostringstream ss;
  ss << x;
  return ss.str();

works but isn't suitable for performance critical code.

User-defined classes may implement the stream insertion operator if desired:

std::ostream operator<<( std::ostream& out, const A& a )
    // write a string representation of a to out
    return out; 

Aside from streams, since C++11 you can also use the std::to_string (and std::to_wstring) function which is overloaded for all fundamental types and returns the string representation of its parameter.

std::string s = to_string(0x12f3);  // after this the string s contains "4851"