将 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";
}
您无法复制 流,因此您无法按值传递它。
改为通过引用传递:
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();
}
我想做的是创建一个方法,将字符串流作为参数,在方法中写入,然后在方法外从字符串流中读取。
例如这样的东西。
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";
}
您无法复制 流,因此您无法按值传递它。
改为通过引用传递:
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();
}