我是靠谱客的博主 悦耳马里奥,最近开发中收集的这篇文章主要介绍spdlog&rapidjson 使用记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目中需要记录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()));

 

 

 

 

转载于:https://www.cnblogs.com/youdias/p/9436208.html

最后

以上就是悦耳马里奥为你收集整理的spdlog&rapidjson 使用记录的全部内容,希望文章能够帮你解决spdlog&rapidjson 使用记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部