gpt4 book ai didi

c++ - 如何自动将流模式设置回默认值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:53 25 4
gpt4 key购买 nike

<分区>

C++ Steam 对象有状态。如果一个人写一段代码,比如

using namespace std; 
cout << hex << setw(8) << setfill('0') << x << endl;

忘记设置流状态。这会导致其他一些不相关的代码出现问题。做“set”和“set back”配对是很乏味的。除此之外,在我看来,这也违反了 RAII 背后的惯例。

我的问题是:是否有可能仅通过一层薄薄的包装,使这些状态操作类似于 RAII。也就是说,在表达式以分号结束后,流状态会自动设置回默认值。

更新:按照@0x499602D2 提供的链接,一种解决方法可能类似于

#include <boost/io/ios_state.hpp>
#include <ios>
#include <iostream>
#include <ostream>
#define AUTO_COUT(x) {\
boost::io::ios_all_saver ias( cout );\
x;\
}while(0)

然后可以像这样使用宏

AUTO_COUT(cout << hex << setw(8) << setfill('0') << x << endl);

顺便说一句,为 boost::io::ios_state 的保护程序类添加一个锁定字段可能是个好主意,以防多线程程序中发生有趣的事情。或者他们已经这样做了?

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