我知道我无法复制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
上浏览了大部分问题,但找不到针对此特定情况的答案。
您可以copyfmt
-复制格式信息。
s2.copyfmt(s1);
或者,您可以使用以下方式保存和恢复标志:
std::ios_base::fmtflags f = s1.flags();
s2.flags(f);
您可以使用从copyfmt
继承的copyfmt
方法。