我有一个定义为
的函数void writeSite(string& site, const string& contentType);
现在我正在使用std::ostringstream
函数构建我的字符串。
完成字符串后,我想调用writeSite
函数。但是我收到以下错误:
no matching function for call to ‘writeSite(std::basic_ostringstream<char>::__string_type, const char [17])’
writeSite(body.str(), "application/json");
如果我先将ostringstream
保存到新的std::string
变量,然后调用writeSite
函数,我就可以解决问题。
但我想知道,如果有更好的选择吗?
std::ostringstream body;
body << "{";
// some more string building
body << "}";
std::string sbody = body.str();
writeSite(sbody, "application/json");
答案 0 :(得分:2)
当你这样做时
writeSite(body.str(), "application/json");
body.str()
返回的字符串对象是临时。非常量引用不能绑定到临时对象。
一个简单的解决方案就是使site
参数const
与contentType
参数一样(否则会遇到同样的问题)。