gpt4 book ai didi

c++ - 如何实现作用域 iostream 格式化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:09 26 4
gpt4 key购买 nike

我想在 C++ 中限制 I/O 流格式化的影响,这样我就可以做这样的事情:

std::cout << std::hex << ...
if (some_condition) {
scoped_iofmt localized(std::cout);

std::cout << std::oct << ...
}
// outside the block, we're now back to hex

以便在离开 block 时将基数、精度、填充等恢复到它们以前的值。

这是我想到的最好的:

#include <ios>

class scoped_iofmt
{
std::ios& io_; // The true stream we shadow
std::ios dummy_; // Dummy stream to hold format information

public:
explicit scoped_iofmt(std::ios& io)
: io_(io), dummy_(0) { dummy_.copyfmt(io_); }
~scoped_iofmt() { try { io_.copyfmt(dummy_); } catch (...) {} }
};

...但是 c++ iostreams 是一个相当棘手的领域,我不确定上面的安全性/适当性。危险吗?您(或有第三方)已经做得更好了吗?

最佳答案

也许类似于 Boost I/O Stream State-saver library

关于c++ - 如何实现作用域 iostream 格式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com