[std::ostringstream](<http://en.cppreference.com/w/cpp/io/basic_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](<http://en.cppreference.com/w/cpp/string/basic_string/to_string>) (and [std::to_wstring](<http://en.cppreference.com/w/cpp/string/basic_string/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"