如何将ostringstream对象复制到另一个对象(使用gcc-4.7.0)

时间:2014-12-07 03:44:54

标签: c++ gcc ostringstream

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

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

^我可以'真的上传do-something部分,因为它是学校项目的一部分,但是编译器在我的错误处:os.swap(temp);

我也试过了=运算符,但是效果不好

1 个答案:

答案 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
}