所有其他帖子告诉我改变我的编译器,但我不能,因为我应该使用这个编译器。请帮忙!
void foo(ostringstream &os) {
ostringstream temp;
temp << 0;
//do something
os.swap(temp);
}
^我可以'真的上传do-something部分,因为它是学校项目的一部分,但是编译器在我的错误处:os.swap(temp);
我也试过了=运算符,但是效果不好
答案 0 :(得分:1)
您可以使用str
中的std::ostringstream
成员函数从临时流获取缓冲区,并将设置传递给foo
的缓冲区。
#include <iostream>
#include <string>
#include <sstream>
void foo(std::ostringstream &os)
{
std::ostringstream temp;
temp << "goodbye";
//do something
os.str(temp.str()); // Set the new buffer contents
}
int main()
{
std::ostringstream out;
out << "hello";
std::cout << out.str() << std::endl;
foo(out);
std::cout << out.str() << std::endl;
}
另外,只要输入os
并直接输出到foo
,就可以通过清除os
中的缓冲区来消除临时流的使用。您的帖子没有提供足够的信息来确定这对您是否有用,但它是一个选项。
void foo(std::ostringstream &os)
{
os.str(""); // Set the new buffer contents
os << "goodbye";
// do something
}