游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2757|回复: 5

文本数据解析相关的几个类

[复制链接]

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2010-6-13 23:47:00 | 显示全部楼层 |阅读模式
写了点代码,可以用来在内存中表示字符串、列表、map及其组合的数据,并可以通过istream/ostream进行序列化。可以用来网络通信、写命令行工具(只是用起来简单,但是命令语法可能比较奇怪)、数据文件或配置文件的读写、模块之间的数据访问。
具体使用方法可以看代码……那个main.cpp实现了从标准输入里读取数据,然后格式化后再输出。

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2010-6-14 09:02:00 | 显示全部楼层

Re:文本数据解析相关的几个类

忘了说了,数据格式大概是这样的:

  1. {
  2.     name= string,
  3.     name2= [ 1,2,3 ],
  4.     name3= { name= 123, name2= 132131 }
  5. }
复制代码


比较类似于lua表的形式([]对应的是vector,{}对应的是map),但是里面的数据只有字符串这一种类型,所以不需要双引号之类的。支持用转义符号"\"把那些保留符号放进数据里。默认情况下空格、tab和回车都不会作为数据的一部分。最外层的数据可以是单独的一个字符串、vector或者map。

56

主题

94

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2010-6-23 16:56:00 | 显示全部楼层

Re:文本数据解析相关的几个类

http://www.cppblog.com/gaimor/archive/2010/05/31/116823.html!

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2010-6-23 19:42:00 | 显示全部楼层

Re:文本数据解析相关的几个类

收下了...

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2010-7-23 10:27:00 | 显示全部楼层

Re:文本数据解析相关的几个类

恩,其实在没有非常好的解析器之前,还是推荐直接用json……
楼顶那个格式的好处是不需要那么多的引号,但是目前的解析器……
理想的解析器是这样的:

  1. class Parser
  2. {
  3. public:
  4.     void push( std::list< Tbl >& tbls, const char* buf, size_t len );
  5. };
复制代码

这个的用途是可以用来对网络消息做打包/解包。之前一段时间曾经想自己做一个,但是最后觉得那个精力花得太多,加上python标准库里就有json模块,所以最后还是用了json,毕竟是个标准化、有广泛支持的东西,至于那些引号,目前应该还不成为问题。不过我还是觉得那些引号很多余。
用python简单写了个基于json的网络库,大家可以去围观:
http://bbs.chinaunix.net/thread-1754219-1-1.html

29

主题

107

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2010-7-25 12:13:00 | 显示全部楼层

Re:文本数据解析相关的几个类

不错,兄弟!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 10:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表