rapidjson中string使用的一点小坑
来源:互联网 发布:选购笔记本 知乎 编辑:程序博客网 时间:2024/06/06 07:40
\u00000\u0004T_\u0000\u0000E html><html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
使用rapidjson时出现以上问题,1.不是完整的内容,2.多次转义\
bid.AddMember("adm", rapidjson::StringRef(html_snippet.c_str(),html_snippet.size()), allocator);
stringRef(html_snippet.c_str())一开始以为可能可能是字符串结束标志问题,这种方式会调动C的strlen去查找\0判断字符串结束,而指定字符串长度的size后仍然会有\u00000的乱码出现.
使用另一种方式,未出现此种问题:
Value str_val;
str_val.SetString(html_snippet.c_str(),html_snippet.length(),allocator);
bid.AddMember("adm", str_val, allocator);
等价的方式:ringRef(html_snippet.c_str(),Value().SetString(html_snippet.c_str(),allocator).Move(),allocator)
回去仔细查看手册对比源码,这两种方式的差异是StringRef是引用转移,也就是把指针指向了真正内容所在的内存区域。而第二种方式是值copy的方式,会非配内存把字符串复制一份副本。所以问题的根源是html_snippet 是临时局部变量,在document对象序列成json string是html_snippet局部变量已被析构,故转移的方式指向的内存区域是未知的,导致了\00000的出现。
2.多次转义\是嵌套json 对象导致。
- rapidjson中string使用的一点小坑
- rapidjson库的使用
- RapidJSON的使用
- rapidJson 的使用
- rapidjson的使用
- rapidjson的使用例子
- rapidjson的使用
- Java中关于String的一点小问题!
- rapidjson库的基本使用
- Rapidjson的简单使用示例
- 关于使用Glide的一点小坑
- Android使用SVG的一点小坑
- c++中std::string使用的一点新体会
- C#string类的一点小细节
- rapidjson使用
- rapidjson 使用
- rapidjson 使用
- [原创]谈谈vb中使用数据库的一点小问题
- CSU 1563 Lexicography (搜索+组合数)
- 数据结构导论
- hdu 1873 (优先队列)
- Birthday Paradox
- 模板——快速幂
- rapidjson中string使用的一点小坑
- Java构建工具, ZeroC ICE, word2vec
- [USACO3.3.1]Riding the Fences
- 浅析设计模式--(一)单例模式
- bzoj2286 [Sdoi2011]消耗战
- 从零开始构建支持TLS1.2的Web服务器Linux版(四)配置FTP环境
- 应届狗的自我修养--unix文件系统学习篇
- 2.使用synchronized关键字实现多线程的同步和互斥(不同线程同时读写同一数据)
- API学习java.lang.Object.getClass