将 Stringstream 传递给方法

Pass a Stringstream into a method

我想做的是创建一个方法,将字符串流作为参数,在方法中写入,然后在方法外从字符串流中读取。

例如这样的东西。

void writeToStream(std::stringstream sstr){
   sstr << "Hello World";
}

int main(){
   std::stringstream sstr;
   writeToStream(sstr);
   std::cout << sstr.str();
}

我在执行此操作时遇到编译时错误。这可能是因为我应该使用对 stringstream 的引用或类似的东西。我尝试了使用引用或指针的不同组合,但似乎没有任何效果?

按如下方式更改您的函数并包含 <sstream>

void writeToStream(std::stringstream& sstr){
       sstr << "Hello World";
    }

演示:http://coliru.stacked-crooked.com/a/34b86cfbd3cf87fc

您无法复制 流,因此您无法按值传递它。

改为通过引用传递:

void writeToStream(std::stringstream &sstr)

std::stringstream 无法复制您为函数编写的方式。这是因为讨论的原因 here。但是,您可以将 std::stringstream 作为对函数的引用传递,这是完全合法的。这是一些示例代码:

#include <sstream>

void writeToStream(std::stringstream &sstr){
   sstr << "Hello World";
}

int main(){
   std::stringstream sstr;
   writeToStream(sstr);
   std::cout << sstr.str();
}