创建一个字符串流重复项

Toh*_*iko 2 c++ std stringstream

我知道我无法复制a stringstream,但是我想知道是否可以复制它,以便可以使用相似的输出说明符创建两个字符串。

像这样

std::stringstream s1;
s1 << std::scientific << std::setprecision(4);
s1 << 0.01;

// Later on I want to create s2 given s1
std::stringstream s2;
// Copy formatting specifiers from s1 to s2, so that the effect is 
// s2 << std::scientific << std::setprecision(4);
s2 << 0.02;
Run Code Online (Sandbox Code Playgroud)

我的原因是我正在编写一个接受字符串流的函数,并且我想在修改字符串流之前了解某些输出的宽度。

我已经看完了stringstream这里的大部分问题,但找不到这个特定案例的答案。

Kam*_*Cuk 5

您可以copyfmt-复制格式信息。

s2.copyfmt(s1);
Run Code Online (Sandbox Code Playgroud)

另外,您可以使用以下方法保存和还原标志:

std::ios_base::fmtflags f = s1.flags();
s2.flags(f);
Run Code Online (Sandbox Code Playgroud)