是否可以编写一个采用字符串流的方法并让它看起来像这样,
void method(string str)
void printStringStream( StringStream& ss)
{
method(ss.str());
}
并且可以这样称呼
stringstream var;
printStringStream( var << "Text" << intVar << "More text"<<floatvar);
我查找了 << 运算符,它看起来像返回一个ostream&
对象,但我可能读this
错了,或者只是没有正确实现它。
我真正想要的只是一种干净的方式将东西连接在一起作为一个字符串并将其传递给一个函数。我能找到的最干净的东西是一个 stringstream 对象,但这仍然有很多不足之处。
笔记:
我不能使用太多c++11
答案,因为我在 Visual Studio 2010 上运行(违背我的意愿,但仍然如此)
我可以访问Boost
所以疯了。
只要它可以清理这个烂摊子,我就不会反对自定义方法。
编辑:
将@Mooing Duck 的答案与@PiotrNycz 语法混合在一起,我实现了编写这样的代码的目标,
try{
//code
}catch(exception e)
{
printStringStream( stringstream() << "An exception has occurred.\n"
<<" Error: " << e.message
<<"\n If this persists please contact "<< contactInfo
<<"\n Sorry for the inconvenience");
}
这是我所希望的那样干净和可读。
希望这可以帮助其他人清理书写消息。