- 浏览: 270369 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (263)
- mysql (5)
- boost (6)
- 工具 (10)
- IT生活 (7)
- 多线程 (3)
- Ruby (15)
- php (2)
- MongoDB (39)
- 移动互联网 (2)
- 测试 (8)
- c++ (28)
- 书 (1)
- 网站 (3)
- 网络编程 (14)
- 开源软件 (1)
- 分布式计算 (1)
- 得得得 (1)
- php,wordpress (1)
- error (5)
- 编译 (2)
- 学习 (1)
- 杀毒软件 (1)
- dd (0)
- linux (21)
- 数据库 (1)
- STL (1)
- c++/c (5)
- 软件设计 (1)
- 操作系统 (4)
- 库 (2)
- win32 (1)
- s (0)
- openssl (1)
- perl (2)
- debug (1)
- windows (4)
- python (12)
- windows 防火墙 (1)
- vs (1)
- vim (2)
- vc (1)
- 浏览器插件的危害 (1)
- curl (0)
- 判断手机号码合法性的库 (0)
- 地址备注 (0)
- 安装 File::Slurp (1)
- cenos (2)
- shell (1)
- linunx (1)
- internet (1)
- software (1)
- widows (1)
- linux io (1)
- nginx (2)
- 算法 (2)
- google (1)
- protobuf (2)
- tengine (1)
- tools (1)
- lua (2)
- liunx (1)
- vcard (1)
- lua-iconv (1)
- 网络 (2)
- teat (0)
- ldconfig linux (0)
- awk (0)
- grep (0)
- windws (2)
- linux 命令 (1)
- tcp dump (1)
- vmware (1)
- question2answer (2)
- mongdb (1)
- 正则 (1)
- OCR (2)
- Windows Server (1)
最新评论
根据官方文档改写:
http://www.boost.org/doc/libs/1_45_0/libs/serialization/doc/tutorial.html#arrays
http://www.fuzhijie.me/?p=62
http://www.boost.org/doc/libs/1_45_0/libs/serialization/doc/tutorial.html#arrays
http://www.fuzhijie.me/?p=62
#include "stdafx.h" #include <windows.h> #include <process.h> #include <iostream> #include <exception> #include <assert.h> #include <fstream> //include headers that implement a archive in simple text format #include "boost/archive/text_oarchive.hpp" #include "boost/archive/text_iarchive.hpp" #include "boost/archive/binary_iarchive.hpp" #include "boost/archive/binary_oarchive.hpp" #include "boost/serialization/vector.hpp" #include "boost/serialization/string.hpp" #include "boost/iostreams/stream.hpp" #pragma command(lib, "boost_serialization-vc100-mt-1_48.lib") #pragma command(lig, "boost_iostreams-vc100-mt-1_48.lib"); using namespace std; ///////////////////////////////////////////////////////////// // gps coordinate // // illustrates serialization for a simple type // typedef struct gps_struct { char name[100]; char data[2][100]; string version; int id; }gps_struct; class gps_position { public: // friend class boost::serialization::access; // // when the class Archive corresponds to an output archive, the // // & operation is defined similar to <<, Likewise, when the class Archive // // is a type of input archive the & operator is defined similar to >>. // template<class Archive> // void serialize(Archive &ar, const unsigned int version) // { // ar & degrees; // ar & minutes; // ar & seconds; // } int degrees; int minutes; float seconds; vector<string> hellos; gps_struct time; public: gps_position(){}; gps_position(int d, int m, float s) : degrees(d), minutes(m), seconds(s) { hellos.push_back("test1"); hellos.push_back("test2"); hellos.push_back("test3"); strcpy(time.name, "Kevin He"); time.version = "1.0"; time.id =100; strcpy(time.data[0], "time1"); strcpy(time.data[1], "time2"); } }; namespace boost { namespace serialization { template<class Archive> void serialize(Archive & ar, gps_struct & g, const unsigned int version) { ar & g.id; ar & g.name; ar & g.version; ar & g.data; } template<class Archive> void serialize(Archive & ar, gps_position & g, const unsigned int version) { ar & g.degrees; ar & g.minutes; ar & g.seconds; ar & g.hellos; ar & g.time; } } // namespace serialization } // namespace boost int _tmain(int argc, _TCHAR* argv[]) { //create and open a character archive for output std::ofstream ofs("filename"); const gps_position g(35, 59, 24.57); //save data to archive char buffer[4096]; int bufferSize = 4096; string mydata; { //boost::archive::text_oarchive oa(ofs); memset(buffer, 0, bufferSize); boost::iostreams::basic_array<char> sr(buffer, bufferSize); boost::iostreams::stream< boost::iostreams::basic_array<char> > source(sr); boost::archive::text_oarchive oa(source); //write class instance to archive oa << g; //archive and stream closed when destructors are called; } gps_position newg; { //std::ifstream ifs("filename"); //boost::archive::text_iarchive ia(ifs); // read class state from archive boost::iostreams::basic_array<char> sr(buffer, bufferSize); boost::iostreams::basic_array<char> temp(buffer, bufferSize); boost::iostreams::stream< boost::iostreams::basic_array<char> > newsource(temp); boost::archive::text_iarchive ia(newsource); ia >> newg; } // ... some time late restore the class instance to its orginal state return 0; }
发表评论
-
c++ 读取unicode文档
2015-02-09 16:12 975int ReadOneNameFile(char *fil ... -
http://curl.haxx.se/
2013-06-13 17:41 0http://curl.haxx.se/ -
[转]线程本地存储(Thread Local Storage, TLS)分析与使用
2013-05-03 16:53 815线程本地存储(Thread Local Storage, TL ... -
C/C++获得windows版本
2012-12-01 11:05 1479MSDN上有详细介绍,做个标记: #include & ... -
[转]异常处理与MiniDump详解(4) MiniDump
2012-10-24 14:46 972异常处理与MiniDump详解(4) MiniDump wri ... -
禁用系统硬错误消息对话框
2012-08-31 19:14 729http://support.microsoft.com/kb ... -
Application Crash Dump Analysis (Windows 7)
2012-08-28 09:39 0Application Crash Dump Analysis ... -
如何成为一个windows程序debug高手
2012-08-18 14:40 0minidump: http://blog.csdn.ne ... -
Boost库编译后命名方式
2012-05-17 10:29 1375Boost官网的《Geting Started ... -
geoIP
2012-05-14 12:38 0http://www.oschina.net/code/sni ... -
vs2010 断点 无法命中
2012-05-07 16:13 1365这种情况不解决办法有 很多。你这个方法我没用过。最简单的方法就 ... -
$err,hr
2012-05-04 20:43 927在Visual C++ 中,可以在监视窗口添加 $err,hr ... -
WINDOWS下线程同步探讨
2012-04-11 15:04 954概述 线程同步可 ... -
undefined reference to 'pthread_create'问题解决
2012-03-30 11:43 0由于是Linux新手,所以现在才开始接触线程编程,照着GUN/ ... -
linux 下 遍历文件夹下的内容
2012-03-29 19:43 0// only works in cpp #ifdef __c ... -
浅谈ReadDirectoryChangesW函数的作用和问题所在
2012-03-23 10:32 4337转自:http://www.cnblogs.com ... -
用 _findfirst 和 _findnext 查找文件,遍历文件夹
2012-03-30 11:39 2030标签: _findfirst _findnext 杂谈 分类: ... -
我的广告
2012-03-19 10:57 0http://www.webweb.com/signup.as ... -
服务器多服务器设置
2012-03-12 18:01 761当服务器功能比较多时,可以抽象出一个代理,将不同的服务 ... -
记录个函数 strstr
2012-03-10 11:30 1047包含文件:string.h 函数名: strstr 函 ...
相关推荐
9. **Serialization**:`boost.serialization`库提供了序列化和反序列化机制,使得数据可以保存和恢复到/从文件或流中。 10. **Regex**:`boost.regex`库提供了正则表达式支持,比C++标准库中的`<regex>`更强大,更...
4. **容器**:Boost库中的`multi_array`和`array`提供了一种更灵活的数组实现,而`fusion`库则为元编程提供了高级容器支持。 5. **迭代器**:Boost.Iterator库提供了一些增强的迭代器,如`filter_iterator`、`...
6. **输入输出**:如Assign简化赋值操作,Filesystem管理文件系统,Format实现格式化输出,locale_state_savers处理本地化状态,Serialization实现序列化和反序列化,以及日期时间处理库Date_time。 7. **综合工具*...
13. **序列化**:`serialization`库允许将对象的状态序列化到文件或内存流中,以便保存和恢复。 通过深入学习Boost中文版文档,程序员不仅可以了解如何利用这些库来提高代码质量,还可以学习到C++的最佳实践和设计...
8. **序列化库**:Boost.Serialization使得C++对象的状态可以被序列化和反序列化,便于持久化存储或网络传输。 9. **类型识别与转换**:如boost::type_traits和boost::enable_if,用于编译时类型检查和转换。 10. ...
9. **序列化库**:`serialization`库允许将对象的状态保存到文件并恢复,支持XML和二进制格式。 10. **数学和统计**:`math`库提供了许多数学函数,包括统计学、随机数生成、特殊函数等。 11. **字符串处理**:`...
8. **类型转换与序列化**:Boost.Conversion和Boost.Serialization库帮助Hugin实现了不同类型间的转换以及数据的持久化存储。 总之,Boost库在Hugin中的应用,大大增强了其功能和性能,使得Hugin能够高效地处理大量...
- **Lexical_cast**: 能够在字符串和其他基本类型之间进行转换,非常适用于序列化和反序列化操作。 #### Library3: Utility **Utility**库包含了大量实用工具,用于解决日常编程中的常见问题。 - **BOOST_STATIC_...
10. **序列化库**(Serialization):使得对象的状态可以被保存和恢复,便于持久化和数据交换。 通过阅读这份中文版的文档,开发者不仅可以理解Boost库的各个组件,还能学习到C++编程的最佳实践。对于C/C++开发者来...
3. **种子序列(Seed Sequences)**:为了确保随机数序列的可重复性和不可预测性,Boost.Random提供了种子序列类。例如,你可以使用当前时间、系统计数器等作为种子,以生成不同的随机数序列。种子序列可以与随机数...
5. **日期和时间库**(Boost.Date_Time):提供了处理日期和时间的类和函数,包括日期格式化、日期时间的计算和比较。 6. **正则表达式库**(Boost.Regex):实现了强大的正则表达式引擎,支持Unicode字符集。 7. ...
例如,从网络读取二进制数据到char数组后,应使用数组的长度来初始化string对象,像这样: ```cpp char data[max_length]; size_t length = sockClient.read_some(boost::asio::buffer(data), ec); string strData...
Boost库还包括了如Boost.Serialization用于序列化和反序列化,Boost.Python用于C++与Python之间的互操作,以及Boost.Thread库提供了线程管理和同步原语,这些都是构建大规模、多线程应用程序的重要工具。 总结来说...
10. **序列化**:Boost.Serialization库支持将C++对象序列化为XML或二进制格式,便于存储和恢复。 11. **图形用户界面**:Boost.Graphical User Interface(Boost.GUI)虽然不是标准Boost库的一部分,但是一些社区...
这通常涉及到序列化和反序列化过程,例如使用`fstream`类读写文本文件,或者使用更高级的序列化库如Boost.Serialization。 此外,为了提高用户体验,可以考虑添加命令行界面或图形用户界面(GUI)。对于命令行界面...
- `scoped_thread`:智能指针实现的线程类,确保线程在不再使用时被正确销毁。 5. **算法**: - `algorithm`:包含多种扩展的算法,如排序、搜索、比较等,与标准库算法相辅相成。 - `functional`:提供高阶函数...
3. **序列化(Serialization)**:与解析相对,序列化是指将内部数据结构转换回JSON字符串。这对于保存或发送数据非常有用。 4. **错误处理(Error Handling)**:在解析过程中,可能会遇到无效的JSON或者语法错误...
在C++中,可以自定义序列化和反序列化方法,或者利用现有库如Boost.Serialization来实现。 六、错误处理与调试 任何程序都需要考虑异常处理和调试机制。在这个魔方程序中,可能有检查非法旋转操作、矩阵越界访问等...
3. **序列化和反序列化**:用户可以通过`Json::Value`对象的`toStyledString()`方法将JSON数据转换为可读性强的字符串,也可以使用`Json::Reader`类从JSON字符串中构建`Json::Value`对象,实现数据的反序列化。...
对于这种情况,可以重载`和`>>`运算符来实现流式输入输出,或者使用`boost::serialization`等库进行高级序列化操作。 总结,VC++中向文件写入结构体和从文件读取结构体主要涉及`fstream`库的使用,通过`write`和`...