文档章节

spdlog&rapidjson 使用记录

o
 osc_4nmshwhm
发布于 2018/08/07 12:01
字数 430
阅读 31
收藏 0

精选30+云产品,助力企业轻松上云!>>>

项目中需要记录log以及读写json,对比后选择了spdlog以及rapidjson。

 

SPDLog

对于log只是要求能够记录到文件中以及能够过滤,选择spdlog是因为这个只需要包含头文件即可使用,不依赖第三方库,使用简单,而且功能全面,至少足够目前使用。

用法:

下载【https://github.com/gabime/spdlog】文件后拷贝到项目工程目录,直接include即可。

 

1 std::shared_ptr<spdlog::logger> logger;
2 logger = spdlog::basic_logger_mt("basic_logger", "DLLLog.txt");
3 logger->set_level(spdlog::level::debug);
4 logger->info("Start DLL");

有若干个level,

enum level_enum
{
    trace = 0,
    debug = 1,
    info = 2,
    warn = 3,
    err = 4,
    critical = 5,
    off = 6
};

通过set_level进行过滤,只会显示超过setlevel 的log。

 

 

Rapidjson

也是不依赖第三方库的,只需要下载后#include后就可使用。

用法:

下载【https://github.com/Tencent/rapidjson/】,#include,然后就可以使用。

主要用来读写json文件,而读写文件也是通过转换为一个jsonstring来做的,即读取文件到一个string,然后操作该string解析为document,需要写入时候将Document序列化为一个string,将该string写入到文件。

rapidjson::Document ToolBox::ReadJsonFromFile(const std::string& filename)
{
    rapidjson::Document ret;
    ifstream ifs(filename);
    string jsonstr = "";
    string line;
    if (ifs)
    {
        while ((getline(ifs, line)))
        {
            jsonstr += line;
        }
    }    
    ret.Parse(jsonstr.c_str());
    ifs.close();
    return ret;
}

 

int ToolBox::WriteDocumentToFile(const rapidjson::Document& sourcedata, const std::string& filename)
{
    int ret = 0;
    ofstream ifs(filename);
    if (!ifs)
    {
        ret = -1;
        return ret;
    }
    string jsonstr = "";
    StringBuffer buffer;
    Writer<StringBuffer> writer(buffer);
    sourcedata.Accept(writer);
    jsonstr = buffer.GetString();
    ifs << jsonstr;
    ifs.close();
    return ret;
}

得到document后可以通过HasParseError()验证是否解析出错,通过HasMember("XXX")检验是否有该成员,有了就可以操作。需要注意的是如果要修改值,变量不能直接赋值,需要下面方式实现:

d["XXX"].SetString(StringRef(this->XXX.c_str()));

 

 

 

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
rapidjson常见使用示例

目录 目录 1 1. 前言 2 2. Move语意 2 3. rapidjson::Document 2 4. 内存泄漏 3 5. 成员迭代器MemberIterator 4 6. 数组迭代器ValueIterator 4 7. #include头文件 5 8. 示例1:解析一个字符串...

osc_mcgiza9x
2019/01/28
19
0
rapidjson的使用

1、包含头文件 #include "rapidjson/stringbuffer.h" #include "rapidjson/document.h" #include "rapidjson/reader.h" #include "rapidjson/writer.h" using namespace rapidjson; 2、读jso......

osc_e4gzv47r
2018/02/08
2
0
C++的JSON开发包 RapidJSON(40款JSON开发包测试综合性能第一)

Rapidjson 是一个 C++ 的快速 JSON 解析器和生成器,使用 SAX/DOM 风格的 API 设计。 示例代码: 介绍 PPT 下载:http://www.oschina.net/doc/5711 主要特点: RapidJSON是一个C++的JSON解析...

shezjl
2015/05/08
124
0
C++的JSON开发包 - RapidJSON

Rapidjson 是一个 C++ 的快速 JSON 解析器和生成器,使用 SAX/DOM 风格的 API 设计。 示例代码: // rapidjson/example/simpledom/simpledom.cpp` include "rapidjson/document.h" include "......

MiloYip
2012/02/01
3W
5
(2)RapidJson的详解及使用

本节主要介绍RapidJson是如何使用的。 (1)RapidJson是什么 RapidJson是一个跨平台的c++的json的解析器和生成器;相比较jsoncpp库,RapidJson只有头文件,容易安装;RapidJSON 不依赖STL和b...

osc_cw97bsoa
04/16
19
0

没有更多内容

加载失败,请刷新页面

加载更多

Eclipse_JavaEE_Tomcat_MySQL环境配置

安装java环境,配置系统变量(JAVA_HOME,绝对路径) 下载eclipse+Tomcat+mysql window——》preference——》server——》runtime——》tomcat环境 项目右键build path 配mysql jar ,libra...

愿有时光可回首
今天
20
0
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式

本文基于 MySQL 8 在上一篇:MySQL原理 - InnoDB引擎 - 行记录存储 - Compact格式 中,我们介绍了什么是 InnoDB 行记录存储以及 Compact 行格式,在这一篇中,我们继续介绍其他三种行格式。 ...

zhxhash
今天
29
0
leetcode面试题 17.13(恢复空格)--Java语言实现

求: 哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboo...

拓拔北海
今天
19
0
B站跨年晚会究竟做对了什么?

燃财经(ID:rancaijing)原创 作者 | 赵磊 编辑 | 周昶帆 “补课”是《bilibili晚会 二零一九最美的夜》这个视频中,观众在前两分钟刷得最多的弹幕,寓意着观众是在元旦之后回来补看跨年晚会...

子乾建建_Jeff
01/07
63
0
关于Scrapy爬虫项目运行和调试的小技巧(上篇)

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 迟日江山丽,春风花草香。泥融飞燕子,沙暖睡鸳鸯。 扫除运行Scrapy爬虫程序...

yuhan336
04/02
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部