当试图在ostringstream中连接一个字符串时,这些字符串的内容会被修改和重构,字符串会在开始时被添加

When trying to concatenate a string in ostringstream, which string contents are modified and reconstructed, string get added at beginning

本文关键字:字符串 开始时 添加 修改 重构 ostringstream 连接 一个      更新时间:2023-10-16

可能的重复:
ostringstream';s字符串构造函数?

我面临以下问题。我有一个奥斯特林斯特流说testStr。我首先使用<lt;

testStr << somechar;

然后我修改了:

testStr.Str("some string")

因此现在testStr包含"某个字符串">

现在我想在末尾添加一些字符(比如"answers"TEST"),这样它就可以变成"some String TEST"。

testStr << " " << "TEST";

但我得到了"TESTString"。请告诉我能做些什么?

添加示例代码:

#include <iostream>
#include <sstream>
int main() {
std::ostringstream s;
s << "Hello";
s.str("WorldIsBeautiful");
s << " " << "ENDS";
std::cout << s.str() << std::endl;

}

输出是"ENDIsBeautiful",正如我所期望的"WorldIsBeautifulENDS"。

我不太确定,但看起来它仍然设置为一开始就写。要解决此问题,可以调用s.seekp(0, std::ios_base::end);将输出位置指示器设置回末尾。我这里有一个工作样本:

#include <iostream>
#include <sstream>
int main() {
std::ostringstream s;
s.str( "Hello" );
s.seekp(0, std::ios_base::end);
s << "x" << "World";
std::cout << s.str() << std::endl;
}

输出:

HelloxWorld