Rapidjson使用中的debug小感想

本文记录了在使用RapidJSON库解析JSON文件时遇到的问题,特别是与fstream结合使用时的细节。作者指出,必须在解析完成后再关闭文件流,否则可能导致解析失败。在示例代码中,先关闭文件流再调用ParseStream会导致Document对象为空。这个观察对于避免错误和理解RapidJSON的正确用法至关重要。

最近学校算法课要求完成一个搭建简易区块链系统的小项目,里面需要进行json文件的解析,jsoncpp因为环境配置很苦手因此我选择了腾讯的rapidjson,今天在debug写出来的客户端的时候,发现rapidjson和fstream结合使用有一个需要注意的地方。

基于文件的标准操作,使用ifstream读入文件之后需要进行关闭操作。

在此场景下我需要使用rapidjson中的istreamwrapper进行文件输入流的处理,并把结果解析到rapidjson库的核心类document中。

一开始我是这样写的

Document tail_doc_02;
IStreamWrapper isw_tail_02(change_tail_02);
change_tail_02.close();
tail_doc_02.ParseStream(isw_tail_02);

结果解析出来的tail_doc_02为空,报错is_not_object。通过cout调试,发现需要将parsestream运行完后才能得到正确结果,即:

Document tail_doc_02;
IStreamWrapper isw_tail_02(change_tail_02);
tail_doc_02.ParseStream(isw_tail_02);
change_tail_02.close();

故可知必须要在解析完成并放入document之后才能关闭文件流。不能在istreamwrapper后就关闭文件。

仅作个人笔记使用,如有不对请指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值