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

No matching function call for ostringstream `.str()`

我有一个定义为

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

当你这样做时

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

body.str()返回的字符串对象是临时的。并且 non-constant 引用不能绑定到临时对象。

一个简单的解决方案是使 site 参数 const 就像您对 contentType 参数所做的那样(否则会遇到同样的问题)。