-1

所有其他帖子都告诉我更改我的编译器,但我不能,因为我应该使用这个编译器。请帮忙!

void foo(ostringstream &os) {
    ostringstream temp;
    temp << 0;
    //do something
    os.swap(temp);
}

^我真的不能上传做某事的部分,因为它是学校项目的一部分,但编译器在以下位置给我一个错误:os.swap(temp);

我也尝试了 = 运算符,但效果不佳

4

1 回答 1

1

您可以使用str成员函数 instd::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
}
于 2014-12-07T14:04:53.610 回答