没有匹配的函数调用ostringstream` .str()`

时间:2018-03-24 12:03:32

标签: c++ ostringstream

我有一个定义为

的函数
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");

1 个答案:

答案 0 :(得分:2)

当你这样做时

writeSite(body.str(), "application/json");

body.str()返回的字符串对象是临时。非常量引用不能绑定到临时对象。

一个简单的解决方案就是使site参数constcontentType参数一样(否则会遇到同样的问题)。