c++ 使用boost去读写json

本文介绍如何使用Boost库读取和写入JSON配置文件。通过示例代码展示了读取简单JSON文件的方法,并提供了一个函数用于向现有JSON字符串中添加新的键值对。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天刚好写一个小玩具需要用到读写配置文件,趁机学习了c++的boost 读写库

{
"SERVER_REG":"/tmp/wangyishen_register",
"SERVER_LOG":"/tmp/wangyishen_login",
"SERVER_CHAT":"/tmp/wangyishen_sendmsg",
"MAX_CONNECT_NUM":"2"
}

对于上面一个位于/etc/erverConfig结构简单的json文件,读取的方式如下

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

...

boost::property_tree::ptree root;//创建一个结构对象    boost::property_tree::read_json<boost::property_tree::ptree>("/etc/serverConfig",root);//读文件存放到root中
char SERVER_REG[BUF_LEN];//创建变量
memset(SERVER_REG , 0, sizeof(SERVER_REG));
memcpy(SERVER_REG , root.get<string>("SERVER_REG").data(), strlen(root.get<string>("SERVER_REG").data()) * sizeof(root.get<string>("SERVER_REG").data()));//读取内容并保存到变量中

如果希望写数据进某个字符串中 可以使用如下方法

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
//将 key:value写进字符串others中
bool json_add(char* others,char* key,char* value){
    boost::property_tree::ptree root; //创建结构对象
    std::stringstream s (others);     
    try {
        read_json(s, root);          //读取
    }
    catch(std::exception & e){
        printf("cannot parse from string 'others' \n");
        return false;
    }

    root.put(key,value);            //将内容放入对象结构root中
    write_json(s, root,false);      //写回字符流对象
    memset(others, 0 ,BUF_LEN* sizeof(char));
    memcpy(others,s.str().data(), sizeof(char) * strlen(s.str().data())); //拷贝回去
    return true;
}

更加详细的使用见: http://einverne.github.io/post/2016/01/boost-learning-note-7.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值