项目
文章平均质量分 83
C++项目总结
06le
这个作者很懒,什么都没留下…
展开
-
json库 数组类型解析
语法子集及解析思路:数组的格式:其中%x5B是左中括号,ws是空字符,value是json值,%x2C是逗号,%x5D是右中括号。解析思路先解析左中括号,跳过空格,看下一个解析符号是否为右中括号,是的话就解析完成,设置lept_value。不是的话就进入循环解析整个数组:调用lept_parse_value()解析值,不成功就退出循环,释放之前解析开辟的内存,成功了就把临时lept_value压入栈,解析下一个字符是逗号就跳过空格,开始下一次循环,是右中括号就说明解析结束,将栈中元素弹出存入数组,原创 2021-09-08 12:35:50 · 269 阅读 · 0 评论 -
json库 字符串类型解析
语法子集及解析思路:上面的子集表示json字符串是由两个双引号夹着零至多个字符构成。字符分为无转义字符和转义字符,转义字符有九种,比较特殊的是\uXXXX表示的Unicode字符。解析思路先解析了左双引号,然后开始解析中间的字符,遇到右双引号“"”表示解析结束,遇到"\"表示解析转义字符,继续检测’\‘后面的字符是否为合法转义字符,遇到’\0’表示字符串结尾,没有遇到右双引号,报错,否则就是默认字符,检测是否为合法默认字符。由于事先不知道字符串长度,需要一个地方来存储解析结果,而且在解析字符串,原创 2021-09-03 15:06:13 · 407 阅读 · 0 评论 -
json库 Unicode解析
解析思路:json字符串中/uXXXX是用十六进制表示码点U+0000 至 U+FFFF。我们需要:将4位十六进制整数解析成码点(Unicode字符)。将码点编码成UTF-8,该过程可能要处理代理对。实现过程及遇到的问题;1. Unicode相关知识:Unicode及编码规则介绍Unicode是为了解决ASCII码表示字符数过少,各地区编码方式不同这两个问题而出现,Unicode为每个字符分配唯一的码点,就像身份证号码一样,码点的表示是U+XXXXXX,X表示十六进制数。码点的取值范围原创 2021-09-03 15:03:46 · 2096 阅读 · 0 评论 -
json库 number类型解析
语法子集及解析思路:number由负号,整数,小数,指数组成,只有整数是必须的,正号是非法的。小数由小数点后是1或多个数字组成,指数由e/E后1或多个数字组成。解析思路先解析负号,然后解析0或者1后接n个数字,再解析小数,指数,最后再自行校验格式(strtod能转换json不支持的格式并返回错误代码)+strtod将字符串转至浮点数并存入结果。实现过程及遇到的问题;解释一下strtod函数:有两个参数,第一个是传入字符串str,第二个是字符指针ptr,被设置为指向str第一个数值后的下一个字原创 2021-09-02 14:46:38 · 1830 阅读 · 0 评论 -
json库 null,boolen类型解析
1.null,boolen类型解析语法子集及解析思路:当中 %xhh 表示以 16 进制表示的字符,/ 是多选一,* 是零或多个,( ) 用于分组。上面的子集意思是 json文本是由空白 值 空白组成,空白是空格符/制表符/换行符/回车符的一种,值是null/false/true的一种,每一种有对应的字面值。解析思路由于 JSON 语法特别简单,只需检测下一个字符,便可以知道它是哪种类型的值,然后调用相关的分析函数。对于完整的 JSON 语法,跳过空白后,只需检测当前字符:n ➔ nullt原创 2021-09-02 13:35:00 · 643 阅读 · 0 评论