在 C++ 中编辑 stringbuf 的内容

Editing the content of a stringbuf in C++

如何在不改变已有内容的情况下编辑 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 就可以让它工作?

您只需要寻找新的 ostream 到其缓冲区的末尾:

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

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

(live demo)