力为的技术博客
联系
聚合
管理
154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
公告
@上海浦东
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(58)
给我留言
查看公开留言
查看私人留言
随笔分类
(154)
2. Graphics(10)
3. VC&MFC&Qt(35)
4. C++ FAQ(35)
5. GP&STL&BOOST(10)
6. COM&ATL&WTL(5)
7. OGRE Analysis(14)
8. ACIS/HOOPS(4)
9.OpenCASCADE(13)
Mac&iOS(5)
Mac&iOS(1)
Tools(22)
积分与排名
积分 - 704646
排名 - 22
最新评论
1. re: 2015武汉校园招聘归来
@eryar
时间安排的太紧,就没有惊扰你啦。
--力为
2. re: 2015武汉校园招聘归来
评论内容较长,点击标题查看
--sunyuanbo
3. re: 2015武汉校园招聘归来
谢谢 您的笔记让我受益匪浅
--仝锡林
4. re: 2015武汉校园招聘归来
不知道来武汉了啊!
--eryar
5. re: 2015武汉校园招聘归来
@力为
谢谢提醒,还在学习中。。。
--编程小学徒
6. re: 2015武汉校园招聘归来
评论内容较长,点击标题查看
--编程小学徒
7. re: 2015武汉校园招聘归来[未登录]
评论内容较长,点击标题查看
--chipset
8. re: 2015武汉校园招聘归来
@编程小学徒
考研也不仅仅靠有编程兴趣就够了,还有其他的课程。好好准备吧,祝考试顺利。
--力为
9. re: 2015武汉校园招聘归来
评论内容较长,点击标题查看
--编程小学徒
10. re: 2015武汉校园招聘归来[未登录]
为了混口饭吃,大家都不容易啊,原谅刷题的同学吧。话说学校里能教啥呀,都靠自己用心,有上进心才是最重要的,否则笔试面试再好也是白扯。从面试官的角度看考试没有错,换成我会找有潜力的或者上进心强的。
--chipset
11. re: 【代码】使用Teigha读取DWG
要用vs2010编译么?
--jj
12. re: 临时对象引用[未登录]
最后一个例子也是零时变量?
--zhonghuajia
13. re: 为什么需要给函数返回类型加const
评论内容较长,点击标题查看
--冬瓜
14. re: 【代码】使用Teigha读取DWG
欢迎加入QQ群122751318,讨论Teigha
--Teigha开发
15. re: CMake + Qt5.1.0
@MIKE
还是不行。
不管是prefix还是library还是include,都尝试过了,不行,网上的方法都不行……
--Delbert
评论排行榜
1. Pro OGRE 3D Programming 电子版(54)
2. 手机号码黑名单(53)
3. 屏幕截图工具V1[附源码](22)
4. 波形显示不是很难(15)
5. 五个小矮人分桃子-一道小学生的作业题目(15)
6. 用CImage加载内存里的Image(14)
7. 用istringstream 解决问题一则(14)
8. OGRE动画练习(13)
9. VC+ADO操作数据库注意事项(1)(13)
10. fstream 和 中文路径(13)
11. OGRE粒子系统之在烈火中永生(11)
12. 如何通过FILE*操作内存文件?(11)
13. VC2008 Feature Pack的问题(11)
14. 升级到 VS2008 SP1 注意问题(11)
15. 失足于shared_ptr(11)
[Ideas] Generic Serialization Framework
1
/**/
////////////////////////////////////////////////////////////////////////
//
2
enum
SerializeType
3
{
4
ST_Read,
5
ST_Write,
6
}
;
7
8
/**/
////////////////////////////////////////////////////////////////////////
//
9
//
The basic template for both serialize and desierialze
10
template
<
SerializeType nType,
class
TStream,
class
TDataType
>
11
class
Serialize
12
{
13
typedef TDataType DataType;
14
public
:
15
Serialize(TStream
&
stream, DataType
&
data)
16
{
17
//
Please specialize your own Serialize Class
18
assert(
false
);
19
}
20
}
;
21
22
//
Helper function to simplify the usage
23
template
<
SerializeType nType,
class
TStream,
class
TDataType
>
24
inline
void
SerializeFunc(TStream
&
stream, TDataType
&
data)
25
{
26
typedef Serialize
<
nType, TStream, TDataType
>
Serializer;
27
Serializer ss(stream, data);
28
}
29
30
/**/
////////////////////////////////////////////////////////////////////////
//
31
//
string Serialize class
32
//
To demonstrate the native data type
33
//
Read
34
template
<
class
TStream
>
35
class
Serialize
<
ST_Read, TStream, std::
string
>
36
{
37
typedef std::
string
DataType;
38
public
:
39
Serialize(TStream
&
stream, DataType
&
data)
40
{
41
stream
>>
data;
42
}
43
}
;
44
//
Write
45
template
<
class
TStream
>
46
class
Serialize
<
ST_Write, TStream, std::
string
>
47
{
48
typedef std::
string
DataType;
49
public
:
50
Serialize(TStream
&
stream, DataType
&
data)
51
{
52
stream
<<
data;
53
}
54
}
;
55
56
/**/
////////////////////////////////////////////////////////////////////////
//
57
//
Test Class
58
class
TestClass
59
{
60
public
:
61
TestClass()
62
:m_Name(
"
Name
"
)
63
,m_Id(
"
Id
"
)
64
{
65
66
}
67
68
public
:
69
std::
string
m_Name;
70
std::
string
m_Id;
71
}
;
72
73
//
Partial Specialize the Serialize Class
74
template
<
SerializeType nType,
class
TStream
>
75
class
Serialize
<
nType, TStream, TestClass
>
76
{
77
typedef TestClass DataType;
78
public
:
79
Serialize(TStream
&
stream, DataType
&
data)
80
{
81
SerializeFunc
<
nType
>
(stream, data.m_Name);
82
SerializeFunc
<
nType
>
(stream, data.m_Id);
83
}
84
}
;
85
86
/**/
////////////////////////////////////////////////////////////////////////
//
87
//
Customized stream
88
class
CustomStream
89
{
90
public
:
91
template
<
class
TDataType
>
92
CustomStream
&
operator
>>
(TDataType
&
data)
93
{
94
std::cin
>>
data;
95
return
*
this
;
96
}
97
98
template
<
class
TDataType
>
99
CustomStream
&
operator
<<
(TDataType
&
data)
100
{
101
std::cout
<<
"
[
"
<<
data
<<
"
]
"
<<
std::endl;
102
return
*
this
;
103
}
104
}
;
105
106
/**/
////////////////////////////////////////////////////////////////////////
//
107
108
int
_tmain(
int
argc, _TCHAR
*
argv[])
109
{
110
CustomStream stream;
111
112
TestClass testObject;
113
SerializeFunc
<
ST_Write
>
(std::cout, testObject);
114
std::cout
<<
std::flush;
115
116
SerializeFunc
<
ST_Read
>
(stream, testObject);
117
SerializeFunc
<
ST_Write
>
(stream, testObject);
118
119
std::cout
<<
"
Please any key to exit!
"
;
120
char
ch;
121
std::cin
>>
ch;
122
return
0
;
123
}
124
posted on 2010-09-30 15:08
力为
阅读(1349)
评论(0)
编辑
收藏
引用
所属分类:
5. GP&STL&BOOST
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
Buffer和std::stream
[Ideas] Generic Serialization Framework
我的原创技术随笔大全(2000~2009)
Boost.Python与C++互操作的问题(更新)
boost::any 与 boost::variant 的区别
An Adapter Solution
fstream 和 中文路径
用std::find查找文件流中的内容
const auto_ptr保证拥有权不能转移的实现原理?
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 力为