using embedded stringstream on a single line.

Is there anything in boost/design pattern that can help with following: std::stringstream ss; ss << "SUBMIT: Task(" << absPath << ") "; log( Log::DBG, ss ); The code I am working on does this all over the place, what I would like is : log( Log::DBG, "SUBMIT: Task(" << absPath << ") " ); Best regards, Ta, Avi

On Wed, Aug 26, 2009 at 4:13 PM, Avi Bahra
Is there anything in boost/design pattern that can help with following:
std::stringstream ss; ss << "SUBMIT: Task(" << absPath << ") "; log( Log::DBG, ss );
The code I am working on does this all over the place, what I would like is :
log( Log::DBG, "SUBMIT: Task(" << absPath << ") " );
Well, you could have a look at Boost.Format. It gets you part way there, but you'd still have a std::string rather than std::stringstream. Maybe your log function has a std::string overload? - Rob.

On Wed, Aug 26, 2009 at 4:13 PM, Avi Bahra
Is there anything in boost/design pattern that can help with following:
std::stringstream ss; ss << "SUBMIT: Task(" << absPath << ") "; log( Log::DBG, ss );
The code I am working on does this all over the place, what I would like is :
log( Log::DBG, "SUBMIT: Task(" << absPath << ") " );
Best regards, Ta, Avi
Slightly different, but how about Boost.Format? log( Log::DBG, str(boost::format("SUBMIT: Task( %s) ")%absPath) ); Internally, it uses streams, so your ostream inserters for custom types will get used, I believe. Stuart Dootson

Avi Bahra wrote:
Is there anything in boost/design pattern that can help with following:
std::stringstream ss; ss << "SUBMIT: Task(" << absPath << ") "; log( Log::DBG, ss );
The code I am working on does this all over the place, what I would like is :
log( Log::DBG, "SUBMIT: Task(" << absPath << ") " );
Something simple would be to use lexical_cast (assuming your log()
function has an overload accepting strings):
log(Log::DBG, "Submit: Task(" +
boost::lexical_caststd::string(absPath) + ")");
Alternatively, to get a nicer interface for the caller, the log()
function could be templatized and take care of the streaming. Something
like:
template

Avi Bahra wrote:
Is there anything in boost/design pattern that can help with following:
std::stringstream ss; ss << "SUBMIT: Task(" << absPath << ") "; log( Log::DBG, ss );
The code I am working on does this all over the place, what I would like is :
log( Log::DBG, "SUBMIT: Task(" << absPath << ") " );
My colleague came up with a really cute mechanism:
#include <sstream>
#include
participants (5)
-
Avi Bahra
-
Eric MALENFANT
-
Nat Goodspeed
-
Robert Jones
-
Stuart Dootson