创建字符串流重复项

问题描述 投票:2回答:2

我知道我无法复制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;

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

我已经在stringstream上浏览了大部分问题,但找不到针对此特定情况的答案。

c++ std stringstream
2个回答
5
投票

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

s2.copyfmt(s1);

或者,您可以使用以下方式保存和恢复标志:

std::ios_base::fmtflags f = s1.flags();
s2.flags(f);

3
投票

您可以使用从copyfmt继承的copyfmt方法。

© www.soinside.com 2019 - 2024. All rights reserved.