boost的ios_state_savers简单说明和用法
2012-12-29 14:26
453 查看
1.用途
有时候需要局部地方改变一个流状态变量,时后又需要恢复。
2.框架
3.例子
有时候需要局部地方改变一个流状态变量,时后又需要恢复。
#include <iostream> #include <boost/io/ios_state.hpp> using namespace std; void byte_to_hex(ostream &os, char byte) { boost::io::ios_flags_saver ifs(os); os << hex << static_cast<unsigned>(byte) << endl; } int main() { char c = 100; byte_to_hex(cout, c); cout << 200 << endl;//假如没有boost::io::ios_flags_saver ifs(os);这里输出c8 return 0; }
2.框架
#include <iosfwd> // for std::char_traits (declaration) namespace boost { namespace io { class ios_flags_saver; class ios_precision_saver; class ios_width_saver; class ios_base_all_saver; template < typename Ch, class Tr = ::std::char_traits<Ch> > class basic_ios_iostate_saver; template < typename Ch, class Tr = ::std::char_traits<Ch> > class basic_ios_exception_saver; template < typename Ch, class Tr = ::std::char_traits<Ch> > class basic_ios_tie_saver; template < typename Ch, class Tr = ::std::char_traits<Ch> > class basic_ios_rdbuf_saver; template < typename Ch, class Tr = ::std::char_traits<Ch> > class basic_ios_fill_saver; template < typename Ch, class Tr = ::std::char_traits<Ch> > class basic_ios_locale_saver; template < typename Ch, class Tr = ::std::char_traits<Ch> > class basic_ios_all_saver; typedef basic_ios_iostate_saver<char> ios_iostate_saver; typedef basic_ios_iostate_saver<wchar_t> wios_iostate_saver; typedef basic_ios_exception_saver<char> ios_exception_saver; typedef basic_ios_exception_saver<wchar_t> wios_exception_saver; typedef basic_ios_tie_saver<char> ios_tie_saver; typedef basic_ios_tie_saver<wchar_t> wios_tie_saver; typedef basic_ios_rdbuf_saver<char> ios_rdbuf_saver; typedef basic_ios_rdbuf_saver<wchar_t> wios_rdbuf_saver; typedef basic_ios_fill_saver<char> ios_fill_saver; typedef basic_ios_fill_saver<wchar_t> wios_fill_saver; typedef basic_ios_locale_saver<char> ios_locale_saver; typedef basic_ios_locale_saver<wchar_t> wios_locale_saver; typedef basic_ios_all_saver<char> ios_all_saver; typedef basic_ios_all_saver<wchar_t> wios_all_saver; class ios_iword_saver; class ios_pword_saver; class ios_all_word_saver; } }
3.例子
#include <iostream> #include <fstream> #include <boost/io/ios_state.hpp> using namespace std; void logging(char* msg) { cout << msg << endl; } int main() { std::string s("logfile.txt"); cout << "log start" << endl; if (!s.empty()) { //boost::io::ios_all_saver ifs(cout);//假设在这里,运行时候就会出错。 ofstream ofs(s.c_str()); boost::io::ios_all_saver ifs(cout); cout.rdbuf(ofs.rdbuf()); cout << "fatal msg" << endl; } cout << "log finish" << endl; return 0; }仅是简单的用法说明,具体的还请参照BOOST文档。
相关文章推荐
- copy,assign,strong 在iOS的里的用法简单说明
- static简单实例说明其用法(转)
- iOS 偏好设置存储简单用法-数据持久化
- SSM框架一些配置用法解析(简单说明)
- ios UICollectionView简单说明
- [iOS datePickerView] UIDatePickerView 的简单用法
- OSChina_IOS版客户端笔记(六)_AFNetWorking的简单用法
- IOS多线程_GCD的简单使用和详细说明
- iOS 用CornerStone配置SVN,HTTP及svn简单使用说明
- iOS关于本地推送通知的简单用法
- 简单说明Python中的装饰器的用法
- iOS开发Swift篇(02) NSThread线程相关简单说明
- [IOS]NSLayoutConstraint-代码实现自动布局的函数用法说明
- 原创 导弹能否摧毁目标?一个简单的例子说明c# 中property(性质)的用法
- iOS中runtime的简单用法——动态绑定
- iOS开发:UIBarButtonItem的简单用法
- zlib用法简单说明[转]
- iOS UITableView简单用法
- boost::regex简单用法
- zlib用法简单说明