将Stringstream传递给方法

时间:2015-06-18 14:49:03

标签: c++ stringstream

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

例如类似的东西。

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

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

但是当我这样做时,我收到了编译时错误。这可能是因为我应该使用对stringstream的引用或类似的东西。我尝试过使用引用或指针的不同组合,但似乎什么都没有用?

3 个答案:

答案 0 :(得分:4)

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

通过引用传递它:

void writeToStream(std::stringstream &sstr)

答案 1 :(得分:3)

无法复制

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();
}

答案 2 :(得分:2)

按如下方式更改您的功能,并添加<sstream>

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

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