烟台达内教育
服务热线:400-008-6280
当前位置>烟台达内教育

烟台C/C++语言培训班

烟台C/C++语言培训班

  • 上课时段:见详情
  • 教学点:1个
  • 开班时间:随到随学
  • 课程价格:请咨询
  • 已关注:841
  • 优惠价格:请咨询
  • 咨询电话: 400-008-6280
授课学校:烟台达内教育 (点击获取校区地址)

课程介绍

烟台C/C++语言培训机构,地址,电话,北京达内教育

       烟台C/C++语言培训相关资料:

  教你快速搞定Qt下的Json文件使用

  JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。JSON 解析器和 JSON 库支持许多不同的编程语言,目前非常多的编程语言都支持JSON。接下来传智播客C/C++培训专家为大家介绍一下Qt下的Json的使用。

  Json的两种结构

  JSON有两种表示结构,对象和数组。

  l 对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

  {

  key1:value1,

  key2:value2,

  ...

  }

  其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组。

  l 数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。

  [

  true,

  123,

  “hello,world”

  ]

  数组中的元素值类型可以相同也可不同。

  Json格式的文件在使用的时候是十分灵活的,其中数组和对象之间也是可以相互嵌套的,大家可以按照自己的实际需求来定义成对应的格式。例如:

  [

  { "firstName":"John" , "lastName":"Doe" },

  { "firstName":"Anna" , "lastName":"Smith" },

  { "firstName":"Peter" , "lastName": "Jones" }

  ]

  Qt5中JSON的生成与解析

  Qt5 新增加了处理 JSON 的类,与 XML 类库类似,均以 QJson 开头,在 QtCore 模块中,不需要额外引入其它模块。Qt5 新增加六个相关类:

Qt

  需要大家着重掌握的类为前四个。

  QJsonDocument

  该Json文档类主要是把json格式的数据解析为Qt中的Json文档对象,所有我们在使用该类之前,需要先把数据准备好:

  ] 解析Json

  1. 使用QFile对象加载指定的Json格式文件

  a) QFile file(”D:\myjson.json”);

  b) file.open(QIODevice::ReadWrite);

  2. 通过QFile类中的read方法将文件数据读到内存

  a) QByteArray json = file. readAll();

  3. QJsonDocument::fromJson() 可以由 QByteArray 对象构造一QJsonDocument 对象,用于我们的读写操作

  a) QJsonDocument jsDoc;

  b) jsDoc = QJsonDocument::fromJson(json.toUtf8());

  QJsonObject

  ] 生成json对象

  因为json对象为键值对,所以我们可以使用QJsonObject类的insert方法,向该类对象中插入数据。

  1. 创建空的QJsonObject对象

  a) QJsonObject obj;

  2. 使用insert方法向空对象中插入数据

  a) obj.insert(“name”, “Jack”);

  b) obj.insert(“age”, 26);

  c) obj.insert(“isboy”, true);

  ] 解析json对象

  1. 首先需要先得到一个QJsonDocument对象,然后判断该对象是否是一个json对象,使用isObject()方法

  2. 使用QJsonDocument类的object()方法可以将json文档对象转换为Json对象。

  3. 可以通过QJsonObject对象的key值得到其value值,访问方式为QJsonValue value = obj[key]

  4. 使用QJsonValue类的成员方法将value值转换为实际的数据类型。

  QJsonDocument parse_doucment;

  parse_doucment = QJsonDocument::fromJson(byte_array);

  if(parse_doucment.isObject())

  {

  QJsonObject obj = parse_doucment.object();

  if(obj.contains("name"))

  {

  QJsonValue name_value = obj["name"];

  if(name_value.isString())

  {

  QString name = name_value.toString();

  }

  }

  QJsonArray

  ] 生成Json

  1. 创建Json数组:

  a) QJsonArray json;

  2. 使用QJsonArray类的insert方法插入数据:

  a) json.insert(0, QString("Qt"));

  b) json.insert(1, QString("version"));

  c) json.insert(2, true);

  3. 创建Json文档对象:

  a) QJsonDocument document;

  4. 将初始化完成的json数组对象设置给Json文档对象

  a) document.setArray(json);

  5. 将json文档对象转换为QByteArray对象

  a) QByteArray byte_array = document.toJson();

  生成的文件格式:["Qt","version",true]

  ] 解析Json

  1. 首先需要先得到一个QJsonDocument对象,然后判断该对象是否是一个json数组,使用isArray()方法。

  2. 使用QJsonDocument类的array()方法可以将json文档对象转换为Json对象。

  3. 可以通过QJsonArray对象遍历得到其中的每个value值,访问方式与遍历普通数组的方式相同。

  4. 使用QJsonValue类的成员方法将value值转换为实际的数据类型。

  QJsonDocument parse_doucment;

  parse_doucment = QJsonDocument::fromJson(byte_array);

  if(parse_doucment.isArray())

  {

  QJsonArray array = parse_doucment.array();

  int size = array.size();

  for(int i=0; i

  {

  QJsonValue value = array.at(i);

  if(value.isString())

  {

  QString name = value.toString();

  }

  else if(value.isBool())

  {

  bool flag = value.toBool();

  }

  }

  }

  QJsonValue

  在使用json对象或json数组对象得到对应的value之后,该value值并不是最终的数据类型而是一个QJsonValue类型的属性,我们必须通过该对象判断该类型的实际类型,然后在将其转换为对应的数据类型:

  ] 类型判断相关的成员方法:

  n bool isArray() const // 是否为json数组

  n bool isBool() const // 是否为布尔类型

  n bool isDouble() const // 是否为浮点类型

  n bool isNull() const // 是否为空

  n bool isObject() const // 是否为json对象

  n bool isString() const // 是否为字符串类型

  ] 数据类型转换相关成员方法:

  n QJsonArray toArray(const QJsonArray &defaultValue) const

  n QJsonArray toArray() const // 转为为json数组

  n bool toBool(bool defaultValue = false) const // to布尔类型

  n double toDouble(double defaultValue = 0) const

  n int toInt(int defaultValue = 0) const

  n QJsonObject toObject(const QJsonObject &defaultValue) const

  n QJsonObject toObject() const // 转换为json对象

  n QString toString(const QString &defaultValue = QString()) const

  生成Json

  1. 创建JsonObject对象或数组(再次以对象举例)

  a) QJsonObject json;

  2. 往json对象中添加键值对

  a) json.insert("name", QString("Qt"));

  b) json.insert("version", 5);

  c) json.insert("windows", true);

  3. 创建Json文档对象

  a) QJsonDocument document;

  4. 将Json对象或数组设置给json文档对象

  a) document.setObject(json); // 数组:setArray(array)

  5. 将文档对象转换为QByteArray类型的数据

  a) QByteArray byte_array = document.toJson();

  6. 将该数据通过QFile对象保存为磁盘文件。

  最终格式:{"name": "Qt","version": 5,"windows": true}


C++ 开发语言,主导编程世界的地位

C语言属于高级语言,具有可移植性,面向过程的,贴近底层、运行速度快

       1、应用广泛

       C++ 语言广泛的用于基础软件、桌面系统、网络通信、音频视频、游戏娱乐等诸多领域,是世界上使用最广泛的编程语言之一

80%大型网络游戏由C++编程语言开发

80%大型网络游戏

由C++编程语言开发

大部分基础软件是由C++编程语言开发

大部分基础软件是由

C++编程语言开发

90%以上桌面系统都是由C++语言编写

90%以上桌面系统

都是由C++语言编写

C/C++ 技术在网络通信方面应用巨大

C/C++ 技术在网络通信

方面应用巨大


       2、稳居前列

       

稳居前列据世界权威语言排行榜(TIOBE)的最新数据显示(2019 年 3 月),C和C++ 语言已分别名列排行榜的第二和第四的位置。


C++ 软件人才稀缺,职业发展前景广

C++软件工程师在企业需求中呈上升趋势,人才需求发展处于坚挺状态


C++ 软件人才稀缺,职业发展前景广

可从事行业:算法实现 网络安全 物联网 图形 / 视频 / 多媒体处理 底层数据处理 区块链 负载均衡 反向代理


19年迭代,课程源自企业需求,紧跟时代

达内每一期课程大纲,由研发组结合热点技术与企业需求不断完善


第一阶段 C语言编辑基础课程内容:

• 计算机概述 • 标准 C 基础语法 • 数据结构和算法

学习目标

计算机概述,Linux Eclipse 开发环境搭建

基本数据类型,流程控制,数组 俄罗斯方块

各种存储结构优劣对比,排序算法优劣对比

第二阶段 linux c系统开发

课程内容

• Linux 文件系统 • Linux 内存管理 • Linux 进程管理

• Linux 线程管理 • 网络通讯开发

学习目标

掌握文件的打开与关闭、文件的读写、系统与标准I/O

掌握子进程创建、进程间通讯、信号捕获和处理

掌握线程创建、线程同步技术

第三阶段C++语言及数据库

课程内容

• C++ 基础 • OOP • 异常和 IO 流 • QT 开源框架库

• C++ 模板 • STL 标准模板库 • MySQL

学习目标

熟悉名字空间、各种数据类型的操作

熟练掌握C++ 各种异常情况处理,输入输出流操作

掌握QT 开源框架库的使用

了解C++ 泛化数据类型技术原理和实现

掌握STL 十大容器使用

第四阶段 windows系统开发

课程内容

• Windows 编程基础 • Windows 窗口 • Windows 线程管理 • MFC 框架总揽

• 视图架构 • MFC 序列化 • MFC 网络通讯 • ADO 接口

学习目标

掌握窗口的注册、窗口的创建、消息机制、资源的使用

了解MFC 的概述、程序启动机制、窗口创建机制

掌握文件操作、永久保存机制

掌握ADO 接口访问数据库技术

第五阶段 黑客攻防+网络安全

课程内容

• 网络安全概述 • 网络协议栈 • 密钥 • 内核加固

• 网络诱骗 • 防火墙 • 垃圾邮件过滤 • 恶意代码检测 • 嗅探器

学习目标

网络安全开发编码原理和切入点的剖析

对称秘钥、公钥秘钥的原理解析

针对木马攻击程序的反响渗透和注入技术

防火墙技术工作原理解析

各种抓包工具工作原理


多领域项目实战,助你职位发展先人一步

项目落地+重构,助你不仅能编程-更精编程



阶段项目一

根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。

根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。

HTTP服务器

WebServes

Web服务器可以解析客户端发来HTTP协议,根据用户请求,给予响应数据(静态网页,图片或动态页面)。

HTTP服务器

阶段项目二

根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。

根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。

网络爬虫

WebCrawler

搜索引擎的信息源自互联网,通过“网络爬虫”将整个“互联网”的海量信息获取到本地.(搜索引擎的入口)

阶段项目三

根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。

根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。

电信计费系统

DMS

电信部门针对电信用户登录信息进行采集,分析,传输,存储,以此作为对电信用户资费的依据。

阶段项目四

根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。

根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。

远程监控

Remote Control

取消远程机所有的输入控制功能,实现本地机监视并控制远程机的所有输入输出操作。

扫描二维码免费领取试听课程

报名预约

登录51乐学网

注册51乐学网

免费短信关闭