c++ - 创建字符串流拷贝

标签 c++ std stringstream

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

关于c++ - 创建字符串流拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58886061/

相关文章:

c++ - std::advance 和 std::next 有什么区别?

c++ - std::ofstream 的更快替代品

c++ - 我应该预先分配 std::stringstream 吗?

C++ stringstream使字符串指针无效

c++ - 没有 new 的动态数组 (C++)

c++ - 如何跳过输入流 C++ 中的前导空格?

c++ - 在 tbb 中正确使用访问器

c++ - std::vector 对于清除或删除 POD 的行为是否不同

c++ - 使用字符串流提取参数

c++ - std::tuple 获取除最后一个元素之外的所有内容