Question

I have a function that I cannot touch, Is a "log maker", It puts something to print in a file an show it up when I run the file. The problem is that the function only gets const string so if I want to print something I have to convert everything in this data type (I cannot use cout).

itoa & atoi functions are not standard functions so I cannot use it neither. C++ is very "special" with data types and doesn't accept conversions really easy, so this is my question: How can I convert everytype of data into string for the log purposes?

Probably I should check data type on a function to convert things and returning them into a stringstream (witch I have to convert into a string, of course).

So, any advice on how to do that?

Was it helpful?

Solution

boost::lexical_cast encapsulates the use of ostringstream, so you could use that. Otherwise, the code isn't that difficult:

template<typename T>
std::string
toString( T const& object )
{
    std::ostringstream results;
    results << object;
    return results.str();
}

(There's no reason to use stringstream here; ostringstream is largely sufficient.

OTHER TIPS

You can use

  • std::stringstream

or

  • boost lexical_cast<>

Yes, if you want arbitrary type in string representation stringstream intermediate sounds like a solution.

I assume the functions expects a const std::string & ?

Your approach with std::stringstream is correct. Alternatively you could simply write a toString() method for the class you wish to directly output. However, usually when one wants to output objects to a file, overloads the << operator for that particular type.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top