W3CHINA Blog首页    管理页面    写新日志    退出

Blue blue sky

[杂项]Xerces-C的进展
小工头 发表于 2005/5/10 21:52:14

看了俺转的那篇文章之后,俺突然有了新的想法:Xerces-C本身解析和显示中文没有问题,但是缺少把XMLCh类型转到普通的char类型的合适的方法。可是,要处理的XML文件一开始的时候就是普通的字符串。俺要做的工作只是把字符串里多余的空格和回车去掉而已,解析之间把这个工作做完不就得了,干嘛非得解析之后对着XMLCh愁眉苦脸? 这个想法让俺眼前一亮,这么简单的想法,以前怎么就没想到呢?回车的处理很简单,全都去掉就行了。即使XML元素之间有回车,去掉了也不影响解析。空格处理起来相对麻烦一点,要把多于1个的连续的空格变成一个。前一阵子用C++写程序,一开始想得好好的,到后面全都走了样,成员和方法的声明改了一遍又一遍。原本以为C++可以省去一切动态分配空间带来的释放问题,这次发现有的成员变量被多个方法共享,还是需要一遍又一遍的释放……头大!这次用C++的格式,但是再也不想用私有成员变量了,OOP的编程思想掌握得还不好啊,sigh。 俺要实现的是一个字符操作的类,主要功能是从字符串中删去指定的字符和字符串,类似word里的退格操作。俺不是很确定C的函数有没有提供现成的接口,索性自己写了。这东西想起来容易,做起来还有点难度。两个缓冲区指针,还有一个指针在循环体中指向当前要处理的字符串的开头,一个指针指向应当删除的部分的尾巴……一堆指针搅来搅去,一不留神就把值给赋错了。 折腾了几个来回之后,俺的字符串操作类终于可以运行了。写了一个简单的XML文件,一次过关!俺高高兴兴用正式的XML文件来试,结果崩溃了……调试了一下,原来是释放缓冲区的时候出了错。俺狂倒,怎么会这样?唯一的区别就是正式的XML文件比较大,有十几K,难道长度数据溢出了?把int全都改成long,还是出错。来回玩了好几次,终于搞明白了。确定删除后的字符串长度的时候用了一个strlen(),不知道为什么,这东东返回的的长度值比真正的值大了一点,所以缓冲区溢出了。标准C函数也不能完全信赖呀……换个计算方法,果然成功了。 用若干XML文件实验,确实可以去除多余的空格和回车。去除回车的时候发现,使用'\n'作为关键字没用,需要使用"\r\n"才可以。还好C++支持多态,三下两下就改过来了,测试程序也用不着大改。

阅读全文(2662) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
 



This is home

.: 公告

有人的地方就有恩怨

有恩怨的地方就是江湖

人在江湖漂,谁能不挨刀


Bloginess

«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31

.: 我的分类(专题)

首页(629)
杂项(69)
我喜欢过的声音(35)
耳机评测(18)
七天乐(127)
工作八卦(174)


In the Bowl

.: 最新日志

变化:俺的2012
迟来的总结,俺的2011
暂停更新:娶了媳妇不上网
一次坦诚的大会
妹子,妹子!
领导满月
当了领导能怎样
俺的播放列表
俺的重构总结
开会的故事

.: 最新回复

回复:迟来的总结,俺的2011
回复:暂停更新:娶了媳妇不上网
回复:暂停更新:娶了媳妇不上网
回复:小学生作文之记一次拔河比赛
回复:暂停更新:娶了媳妇不上网
回复:暂停更新:娶了媳妇不上网
回复:暂停更新:娶了媳妇不上网
回复:一次坦诚的大会
回复:一次坦诚的大会
回复:一次坦诚的大会


The Fishkeeper
blog名称:少年包工头的工作日记
日志总数:629
评论数量:1458
留言数量:56
访问次数:8974094
建立时间:2004年12月8日



Text Me

.: 留言板

签写新留言

你太客气了
工作是为了更好的生活。。。
飘过!
初烧耳机
路过留声
自动浇花
节日快乐
向您请教
HAHA
咨询下呵呵


Other Fish in the Sea

.: 链接



Lake JJ

真!鱼家MM

传说中的99

王小四的自留地

挣扎中的职场新人tintin同学




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.313 second(s), page refreshed 144773557 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号