gpt4 book ai didi

C++常用函数之XML JSON格式转换问题

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C++常用函数之XML JSON格式转换问题由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

数据格式在编程里面很常见,不同的系统都会有自己的标准。因为给有各的定义,每次做第三方开发系统对接的时候数据格式标准都是头疼的事情.

在开发过程中比较常见的比如有Json、XML、Key-Value等。这里我们就先看看Json和XML。两者的转换有很多开源的代码可以使用,而且也很完善,可以参考xml2json、xsltjson.

XML在Json出现前应用很广泛,灵活性好,应用语言也没有限制,发展了这么长时间后xml标准已经很臃肿。这里可以查看XML的标准XML标准。在C++里面解析和操作XML的库也有不少,tinyxml 就是个不错的选择,体积少、简单、高效的开源库,现在已经发布了TinyXml-2. 。

Json出来后立即被很多高级语言作为了标准推荐使用,如果想了解Json的定义请点击这里:JSON定义 。

XML2Json & Json2XML 。

接下来,我想做个简单的函数来转换.

?
1
2
3
4
5
6
7
<xml>
   <appid>appid-value111111</appid>
   <mch_id>mch_id-value22222</mch_id>
   <nonce_str>nonce_str-value3333333</nonce_str>
   <transaction_id>transaction_id-value44444444</transaction_id>
   <sign>sign-value5555555555</sign>
</xml>

上面的报文是在三方支付里面常见的报文,这次我们来实现对这段报文的Json格式的自由转换.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <string>
#include <iostream>
#include "tinyxml2.h"
#include "nlohmann/json.hpp"
 
using json = nlohmann::json;
using namespace tinyxml2;
using namespace std;
 
string xml2json(string &src)
{
   XMLDocument doc;
   doc.Parse( src.c_str() );
  
   json root;
   XMLElement* rootElement = doc.RootElement();
   XMLElement* child = rootElement->FirstChildElement();
   while (child) {
     const char * id="codetool">

这次我们使用tinyxml2 和nlohmann json 做转换,需要将两者的头文件和源代码文件下载,并在编译中include.

nolhmann json 需要C++ 11 的支持,gcc版本需要在4.7以上.

可以使用下面命令编译

g++ -std=c++11 xmljson.cpp tinyxml2.cpp -I./ 。

?
1
2
3
4
5
6
7
8
9
./a.out
{ "appid" : "appid-value111111" , "mch_id" : "mch_id-value22222" , "nonce_str" : "nonce_str-value3333333" , "sign" : "sign-value5555555555" , "transaction_id" : "transaction_id-value44444444" }
<xml>
   <appid>appid-value111111</appid>
   <mch_id>mch_id-value22222</mch_id>
   <nonce_str>nonce_str-value3333333</nonce_str>
   <sign>sign-value5555555555</sign>
   <transaction_id>transaction_id-value44444444</transaction_id>
</xml>

C++常用函数 XML JSON格式转换https://www.cppentry.com/benc... 。

开发资料https://www.cppentry.com 。

知识点扩展:C++常用的系统函数 。

数学<math.h>:

1 三角函数 。

double sin (double); double cos (double); double tan (double),

2 反三角函数 。

double asin (double); 结果介于[-PI/2, PI/2] double acos (double); 结果介于[0, PI] double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2] double atan2 (double, double); 反正切(整圆值), 结果介于[-PI/2, PI/2] 。

3 双曲三角函数 。

double sinh (double); double cosh (double); double tanh (double),

4 指数与对数 。

double exp (double x); e的x次幂 double pow (double x, double y); x的y次幂 double sqrt (double); double log (double x); 以e为底的对数,即ln x double log10 (double x);log10(x) 以10为底.

没有以2为底的函数但是可以用换底公式解 决:log2(N)=log10(N)/log10(2) 。

5 取整 。

double ceil (double); 不小于x的最小整数 double floor (double); 不大于x的最大整数 。

6 绝对值 。

int abs(int);整型 long labs(long);长整型 double fabs (double);浮点型 。

7 标准化浮点数 。

double frexp (double f, int p); 标准化浮点数, f = x 2^p, 已知f求x, p ( x介于[0.5, 1] ) double ldexp (double x, int p); 与frexp相反, 已知x, p求f 。

8 取整与取余 。

double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分 double fmod (double, double); 返回两参数相除的余数 。

9.平方根 。

double sqrt(double x),

字符<ctype.h>:

int isalpha(int c);c是否为字母 int isdigit(int c);c是否为数字 int tolower(int c);将c转换为小写字母 int toupper(int c);将c转换为大写字母 。

字符串<string.h>

char strcpy(char sl,char s2);将字符串s2复制给s1,即覆盖 unsigned strlen(char sr);求字符串str长度 。

内存操作<memory.h>

void memcpy(void d,void *s,int c);将s指向的内存区域的c个字节复制到d指向的区域 。

类型转换<stdlib.h>

int atoi(char s);将字符串转化为整数 char itoa(int v,char *s,int x);将整数v按x进制转成字符串s 。

时间<time.h>

time_t time(time_t *timer);返回1970/1/1零点到目前的秒数 。

其他<stdlib.h>

srand(unsigned seed);设置随机数的种子 int rand();产生0-RAND_MAX的随机数 exit(int);终止正在执行的程序 。

keep going 。

到此这篇关于C++常用函数之XML JSON格式转换问题的文章就介绍到这了,更多相关c++ xml json格式转换内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://segmentfault.com/a/1190000021868557 。

  • C++
  • JSON
  • XML
  • 延伸 · 阅读

    • 2021-08-20C++实现PyMysql的基本功能实例详解
    • 2021-08-20C/C++ 中const关键字的用法小结
    • 2021-08-20C++基于EasyX图形库实现2048小游戏
    • 2021-08-20C++基于EasyX实现简单扫雷游戏
    • 2021-08-20c/c++获取系统时间函数的方法示例
    • 2021-08-19C++ 中的Swap函数写法汇总
    精彩推荐
    • C/C++C语言实现数据结构串(堆分配存储表示法)实例详解

      C语言实现数据结构串(堆分配存储表示法)实例详解

      这篇文章主要介绍了C语言实现数据结构串(堆分配存储表示法)实例详解的相关资料,需要的朋友可以参考下... 。

      hughdong 1184 2021-05-23
    • C/C++函数式宏定义与普通函数的区别

      函数式宏定义与普通函数的区别

      尽管函数式宏定义和普通函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧、传参、传返回值等一系列工... 。

      C语言教程网 766 2021-01-04
    • C/C++C++临时性对象的生命周期详细解析

      C++临时性对象的生命周期详细解析

      临时性对象的被摧毁,应该是对完整表达式(full-expression)求值过程中的最后一个步骤。该完整表达式造成临时对象的产生... 。

      C++教程网 702 2020-12-26
    • C/C++c++中new和delete操作符用法

      c++中new和delete操作符用法

      c++中new和delete运算符是用于动态分配和撤销内存的运算符,下面是示例,大家参考使用吧... 。

      zxhpj 433 2021-01-19
    • C/C++利用c语言实现卷积码编码器示例

      利用c语言实现卷积码编码器示例

      这篇文章主要介绍了利用c语言实现卷积码编码器示例,需要的朋友可以参考下... 。

      C语言程序设计 488 2021-01-18
    • C/C++C++中发声函数Beep用法

      C++中发声函数Beep用法

      本文给大家分享的是Beep函数的用法以及会使扬声器发出简单的声音的示例,有需要的小伙伴可以参考下... 。

      zhcs 388 2021-05-10
    • C/C++OpenCV实现图像角点检测

      OpenCV实现图像角点检测

      这篇文章主要为大家详细介绍了OpenCV实现图像角点检测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下... 。

      lindamtd 1136 2021-07-17
    • C/C++不要被C++(自动生成规则)所蒙骗

      不要被C++(自动生成规则)所蒙骗

      正如标题所说,我们不要被C++语法中所描述的那些条条框框所“蒙骗”了。的确,相信这些生成规则不会对我们的编程带来多大的影响(不会产生错误),... 。

      C++教程网 378 2020-11-16

    最后此篇关于C++常用函数之XML JSON格式转换问题的文章就讲到这里了,如果你想了解更多关于C++常用函数之XML JSON格式转换问题的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com