当前位置: 首页 > news >正文

萍乡做网站的公司有哪些齐齐哈尔网站建设

萍乡做网站的公司有哪些,齐齐哈尔网站建设,wordpress字体代码,网站建设建站基本流程介绍#x1f4df;作者主页#xff1a;慢热的陕西人 #x1f334;专栏链接#xff1a;C云备份项目 #x1f4e3;欢迎各位大佬#x1f44d;点赞#x1f525;关注#x1f693;收藏#xff0c;#x1f349;留言 主要内容介绍了第三方库jsoncpp和bundle库的使用 文章目录 云备… 作者主页慢热的陕西人 专栏链接C云备份项目 欢迎各位大佬点赞关注收藏留言 主要内容介绍了第三方库jsoncpp和bundle库的使用 文章目录 云备份day021.Json库的使用1.1JSON与JSONCPP简介1.2安装JSONCPP1.3JSONCPP的基本使用1.3.1读取JSON数据1.3.2写入JSON数据 1.4json的数据对象类1.4.1 Json::Value1.4.2 Json::Reader1.4.3Json::Writer 1.5json序列化和反序列化的例子 2.bundle文件压缩库的使用2.1尝试使用bundle库来实现文件的压缩2.2使用bundle库来实现文件的解压缩 云备份day02 1.Json库的使用 在现代软件开发中数据的交换与处理是不可或缺的一环尤其是在多平台、多语言的环境下。这里我们要探讨的是JSONCPP —— 一个处理JSON数据的C库它提供了一套丰富的API来解析、构造、操作和序列化JSON数据。让我们从头开始逐步深入了解JSONCPP的使用。 1.1JSON与JSONCPP简介 **JSONJavaScript Object Notation**是一种轻量级的数据交换格式。它基于文本易于人类阅读和编写同时也易于机器解析和生成。JSON主要用于存储和交换文本信息格式简洁明了具有良好的自描述性因此被广泛应用于Web API、配置文件和数据库之间的数据交换。 JSONCPP是一个在C中处理JSON数据的库它提供了强大的功能包括读取JSON数据、写入JSON数据、数据操作和查询等。通过JSONCPP开发者可以在C项目中轻松地实现复杂的JSON数据处理任务。 1.2安装JSONCPP 在开始使用JSONCPP之前首先需要将其集成到你的C项目中。JSONCPP可以通过多种方式安装包括源码编译、包管理器如vcpkg、apt-get或直接在某些IDE中添加依赖。 # 例如使用apt-get在Ubuntu中安装JSONCPP sudo apt-get install libjsoncpp-dev1.3JSONCPP的基本使用 在JSONCPP中Json::Value是最核心的类它代表了JSON数据中的任意元素无论是一个对象、数组还是基本数据类型。接下来我们将通过一些基本示例来了解如何使用JSONCPP进行JSON数据的读取和写入。 1.3.1读取JSON数据 假设我们有一个JSON字符串我们想要解析它并访问其中的数据。 #include json/json.h #include iostreamint main() {std::string strJson R({name: John Doe,age: 30,is_student: false,skills: [C, Python, JavaScript]});Json::Value root; Json::Reader reader;bool parsingSuccessful reader.parse(strJson, root);if (!parsingSuccessful) {std::cout Failed to parse JSON std::endl;return 1;}std::string name root[name].asString();int age root[age].asInt();bool isStudent root[is_student].asBool();std::cout Name: name , Age: age , Is Student: isStudent std::endl;const Json::Value skills root[skills];for (int index 0; index skills.size(); index) {std::cout Skill index 1 : skills[index].asString() std::endl;}return 0; }1.3.2写入JSON数据 创建和修改JSON数据同样简单。我们可以通过操作Json::Value对象来构建一个JSON结构。 #include json/json.h #include iostreamint main() {Json::Value root;root[name] Jane Doe;root[age] 25;root[is_student] true;root[skills].append(C);root[skills].append(Python);root[skills].append(JavaScript);Json::StreamWriterBuilder builder;const std::unique_ptrJson::StreamWriter writer(builder.newStreamWriter());writer-write(root, std::cout);std::cout std::endl;return 0; }接下来我们将详细介绍 1.4json的数据对象类 //Json数据对象类 class Json::Value{Value operator(const Value other); //Value重载了[]和因此所有的赋值和获取数据都可以通过Value operator[](const std::string key);//简单的方式完成 val[姓名] 小明;Value operator[](const char* key);Value removeMember(const char* key);//移除元素const Value operator[](ArrayIndex index) const; //val[成绩][0]Value append(const Value value);//添加数组元素val[成绩].append(88);ArrayIndex size() const;//获取数组元素个数 val[成绩].size();std::string asString() const;//转string string name val[name].asString();const char* asCString() const;//转char* char *name val[name].asCString();Int asInt() const;//转int int age val[age].asInt();float asFloat() const;//转floatbool asBool() const;//转 bool };//json序列化类低版本用这个更简单 class JSON_API Writer {virtual std::string write(const Value root) 0; } class JSON_API FastWriter : public Writer {virtual std::string write(const Value root); } class JSON_API StyledWriter : public Writer {virtual std::string write(const Value root); } //json序列化类高版本推荐如果用低版本的接口可能会有警告 class JSON_API StreamWriter {virtual int write(Value const root, std::ostream* sout) 0; } class JSON_API StreamWriterBuilder : public StreamWriter::Factory {virtual StreamWriter* newStreamWriter() const; } //json反序列化类低版本用起来更简单 class JSON_API Reader {bool parse(const std::string document, Value root, bool collectComments true); } //json反序列化类高版本更推荐 class JSON_API CharReader {virtual bool parse(char const* beginDoc, char const* endDoc,Value* root, std::string* errs) 0; } class JSON_API CharReaderBuilder : public CharReader::Factory {virtual CharReader* newCharReader() const; }1.4.1 Json::Value Json::Value 是JsonCpp库中的核心类用于表示JSON数据的所有可能类型null、布尔值、整数、实数浮点数、字符串、数组和对象。 #include json/json.h #include string #include iostreamint main() {// 创建一个Json::Value对象Json::Value data;// 通过不同方式设置值data[integer] 1; // 整数data[float] 1.1; // 浮点数data[string] example; // 字符串data[boolean] true; // 布尔值data[array] Json::arrayValue; // 数组data[array].append(1); // 向数组中添加元素data[array].append(two);data[object] Json::objectValue; // 对象data[object][key] value; // 向对象中添加键值对// 打印生成的JSON字符串std::cout data.toStyledString() std::endl;return 0; }1.4.2 Json::Reader Json::Reader 类用于将JSON格式的字符串解析为 Json::Value 对象。这对于读取JSON数据非常有用。 #include json/json.h #include string #include iostreamint main() {std::string str {\age\: 25, \name\: \John\};Json::Value root;Json::Reader reader;bool parsingSuccessful reader.parse(str, root);if (parsingSuccessful) {std::cout Name: root[name].asString() std::endl;std::cout Age: root[age].asInt() std::endl;} else {std::cerr Failed to parse JSON std::endl;}return 0; }1.4.3Json::Writer Json::Writer 是一个抽象基类定义了将 Json::Value 对象转换成JSON格式字符串的接口。Json::FastWriter、Json::StyledWriter 和 Json::StyledStreamWriter 是继承自 Json::Writer 的具体实现类用于生成不同风格的JSON字符串。 由于JsonCpp的较新版本推荐使用 Json::Value 自带的 toStyledString 方法直接生成字符串Json::Writer 及其派生类的使用变得不那么常见。不过如果需要更复杂的定制化输出这些类仍然很有用。 #include json/json.h #include string #include iostreamint main() {Json::Value root;root[action] run;root[data][value] 10;// 使用StyledWriter生成格式化的JSON字符串Json::StyledWriter writer;std::string output writer.write(root);std::cout output std::endl;return 0; }以上代码提供了使用JsonCpp处理JSON数据的基本方法包括创建和操作JSON对象、解析JSON字符串和生成JSON字符串。 1.5json序列化和反序列化的例子 #includeiostream // 引入标准输入输出流库用于控制台输入输出。 #includesstream // 引入字符串流库用于在内存中读写字符串。 #includememory // 引入智能指针库提供对智能指针如 unique_ptr 的支持。 #includestring // 引入字符串库支持string类型的操作。 #includejsoncpp/json/json.h // 引入JsonCpp库用于处理JSON数据的序列化与反序列化。 #includecstring // 引入字符串处理库。using namespace std; // 使用标准命名空间避免每次调用标准库时都需要前缀 std::。int main() // 主函数程序的入口点。 {const char* name 小明; // 定义常量字符指针指向姓名字符串。int age 18; // 定义整数变量表示年龄。int score[] {79, 82, 93}; // 定义整型数组存储三个成绩。Json::Value rootw; // 创建Json::Value对象用作JSON的根节点。rootw[姓名] name; // 向JSON对象添加“姓名”字段。rootw[年龄] age; // 向JSON对象添加“年龄”字段。// 循环添加成绩到JSON的“成绩”数组中。rootw[成绩].append(score[0]);rootw[成绩].append(score[1]);rootw[成绩].append(score[2]);// 序列化JSON对象。Json::StreamWriterBuilder swb; // 创建StreamWriterBuilder对象用于构建StreamWriter。unique_ptrJson::StreamWriter sw(swb.newStreamWriter()); // 使用StreamWriterBuilder创建StreamWriter的unique_ptr。stringstream ss; // 创建一个stringstream对象用作序列化的输出缓冲区。sw-write(rootw, ss); // 使用StreamWriter将JSON对象序列化到stringstream。cout ss.str() endl; // 将序列化的JSON字符串输出到控制台。// 定义一个JSON字符串。string str R({姓名 : 小明,年龄 : 18,成绩 : [79, 82, 93]});Json::Value rootr; // 创建用于反序列化的Json::Value对象。Json::CharReaderBuilder crb; // 创建CharReaderBuilder对象。string err; // 定义字符串以存储可能的错误信息。unique_ptrJson::CharReader cr(crb.newCharReader()); // 使用CharReaderBuilder创建CharReader的unique_ptr。// 尝试解析JSON字符串。bool ret cr-parse(str.c_str(), str.c_str() str.size(), rootr, err);if(ret false) // 检查解析是否成功这里有个逻辑错误应该使用比较。{cout err endl; // 如果解析失败输出错误信息。return -1; // 并结束程序。}// 如果解析成功输出解析得到的数据。cout 姓名: rootr[姓名].asString() endl;cout 年龄: rootr[年龄].asInt() endl;int sz rootr[成绩].size(); // 获取成绩数组的大小。cout 成绩:;for(int i 0; i sz; i) cout rootr[成绩][i] ; // 循环输出每一项成绩。puts(); // 输出换行。return 0; // 程序正常结束。 } 2.bundle文件压缩库的使用 Bundle是一个嵌入式C压缩库支持多种压缩算法和档案格式。设计上追求高压缩比和快速解压速度可配置且兼容C03及C11的可选特性。该库支持多种流和档案格式如.bun和.zip包括DEFLATE、LZMA、ZPAQ、LZ4、ZSTD、BROTLI等23种压缩算法。项目采用Zlib许可证是一种宽松的使用许可。更多详情可以参考其GitHub仓库。 2.1尝试使用bundle库来实现文件的压缩 注意我们先将bundle.cpp和bundle.h都移动到当前的目录下然后在编译的时候要连接pthread库. #includeiostream #includestring #includefstream#includebundle.husing namespace std;void Usage(char* argv[]) {cout Usage: argv[0] origin_file Zip_file endl; }int main(int argc, char* argv[]) {if(argc ! 3) {Usage(argv);return -1;}string ifilename argv[1];string ofilename argv[2];ifstream ifs;ifs.open(ifilename, ios::binary);ifs.seekg(0, ios::end); size_t fsz ifs.tellg();ifs.seekg(0, ios::beg);string body;body.resize(fsz);ifs.read(body[0], fsz);string packed bundle::pack(bundle::LZIP, body);ofstream ofs;ofs.open(ofilename, ios::binary);ofs.write(packed[0], packed.size());ifs.close();ofs.close();return 0; }压缩后的效果其中b.cpp被压缩为b.cpp.lz [milavm-5wklnbmaja Pre_study]$ ls -lh total 15M -rw-rw-r-- 1 mi mi 5.4M Apr 2 19:54 b.cpp -rw-rw-r-- 1 mi mi 668K Apr 2 19:55 b.cpp.lz -rw-rw-r-- 1 mi mi 5.4M Apr 2 19:51 bundle.cpp -rw-rw-r-- 1 mi mi 29K Apr 2 19:32 bundle.h -rwxrwxr-x 1 mi mi 3.2M Apr 2 19:53 compress -rw-rw-r-- 1 mi mi 790 Apr 2 19:56 compress.cpp -rw-rw-r-- 1 mi mi 3.0K Apr 2 19:06 JsonTest.cpp2.2使用bundle库来实现文件的解压缩 #includeiostream // 包含输入输出库 #includestring // 包含字符串库 #includefstream // 包含文件操作库 #includebundle.h // 包含定义的bundle库 using namespace std; // 用于在参数数量不正确时显示正确的使用方式 void Usage(char* argv[]) {// 输出正确的使用方式cout \Usage:\ argv[0] \ Zip_file \ \UnZip_file\ endl; } int main(int argc, char* argv[]) {// 如果参数数量不正确显示使用方法并返回错误码if(argc ! 3) {Usage(argv);return -1;}// 获取压缩和解压文件的名字string ifilename argv[1];string ofilename argv[2];ifstream ifs; // 创建一个ifstream 对象ifs.open(ifilename, ios::binary); // 以二进制方式打开压缩文件ifs.seekg(0, ios::end); // 获取压缩文件的大小size_t fsize ifs.tellg();ifs.seekg(0, ios::beg); // 回到文件开头string body;body.resize(fsize); // 将压缩文件的内容读入内存ifs.read(body[0], fsize); // 读取文件内容ifs.close(); // 关闭压缩文件// 使用bundle库的unpack函数解压文件内容string unpacked bundle::unpack(body);ofstream ofs; // 创建一个ofstream 对象ofs.open(ofilename, ios::binary); //以二进制方式打开解压文件ofs.write(unpacked[0], unpacked.size()); // 将解压后的内容写入解压文件// 关闭解压文件ofs.close();//主函数返回值return 0; } 到这本篇博客的内容就到此结束了。 如果觉得本篇博客内容对你有所帮助的话可以点赞收藏顺便关注一下 如果文章内容有错误欢迎在评论区指正
http://www.pierceye.com/news/431402/

相关文章:

  • 网站创建二级域名网络营销到底是个啥
  • 银州手机网站建设做网站前台模型要做什么呢
  • 做彩票网站推广网站建设培训方案
  • o2o网站建设多少钱昆山专业网站建设
  • c语言自学免费网站网站制作职业
  • 免费刷赞网站推广qq免费有哪些网页设计软件
  • 如何设计网站的首页做海鲜代理在什么网站
  • 网站分析的优劣势苏州网络推广企业
  • 威海网站建设公司施工企业成本核算方法
  • 网站群集约化建设cc域名做门户网站
  • 怎么看一个网站做的好不好北京企业网站推广
  • 网站后台访问权限设置静宁网站建设
  • 网站是什么时候开始的怎样做知道网站
  • 安丘做网站的有那个网站
  • 网站建设佰首选金手指六门户网站 解决方案
  • 怎么可以创建网站十大管理培训课程
  • 网络安全管理系统佛山厂家推广优化
  • 网站建设 外包是什么意思微信小程序低代码开发
  • 网站底部信息用js写法莱芜雪野湖有什么好玩的
  • 青岛高品质网站制作优化快速排名教程
  • 地产项目网站长沙建个网站一般需要多少钱
  • 什么样的网站流量容易做社区网站建设
  • 网站的虚拟主机到期延吉建设局网站
  • 深圳seo网站优化公司wordpress页面权限插件
  • 手机制作购物网站农业 网站源码
  • 飞沐网站设计成都推广网站多少钱
  • 网站建设需要什么手续秦皇岛市房价
  • seo织梦网站建设步骤西宁网络公司电话
  • 河南省建设厅网站 吴浩石家庄做外贸网站建设
  • 免费网站发布怎么做的校园网站建设的参考文献