在 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)
如何在不改变已有内容的情况下编辑 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);
否则新的输出将开始覆盖现有缓冲区。