在C ++中编辑stringbuf的内容

时间:2015-10-19 16:21:21

标签: c++ copy ostream

如何在不改变其中的内容的情况下编辑stringbuf的内容?。

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main (void){
stringbuf str;
ostream output(&str);
output << "Hello";
cout << str.str();
cout << endl;

output << "Hello";
cout << str.str();
cout << endl;

stringbuf str2;
str2.str(str.str());
ostream output2(&str2);
output2 << "Bye";
cout << str2.str();
cout << endl;
}

我需要的结果是:

Hello
HelloHello
HelloHelloBye

但我得到了:

Hello
HelloHello
ByeoHello

另外,无论如何,我每次创建新的stringbuf时都可以在不创建新的ostream的情况下使用它吗?

1 个答案:

答案 0 :(得分:2)

您只需要在缓冲区的末尾寻找新的ostream

output2.seekp(0, std::ios_base::end);

否则新输出将开始覆盖现有缓冲区。

live demo