作者:爱你想你疼你吻你_514 | 来源:互联网 | 2022-12-29 02:16
C++ steam对象具有状态.如果一个人写一段代码就好
using namespace std;
cout <
忘记设置流状态.这将导致其他一些不相关的代码出现问题.进行"设置"和"后退"对匹配是很繁琐的.除此之外,在我看来,这也违背了RAII背后的惯例.
我的问题是:只有一层薄薄的包裹才有可能使这些状态操作成为类RAII.也就是说,在分号表达式结束后,流状态会自动设置回默认值.
更新:按照@ 0x499602D2提供的链接,可能会有一个解决方法
#include
#include
#include
#include
#define AUTO_COUT(x) {\
boost::io::ios_all_saver ias( cout );\
x;\
}while(0)
然后就可以使用宏了
AUTO_COUT(cout <
顺便说一下,如果在多线程程序中出现有趣的事情,最好为那些保护类的boost :: io :: ios_state添加一个锁定字段.或者他们已经这样做了?