Libconfig 修改配置文件里的某个节点
THCommandStatus = (
{
Status = "1";
index = 5;
},
{
Status = "2";
index = 8;
},
{
Status = "3";
index = 7;
},
{
Status = "4";
index = 0;
} );
比如这是配置文件的内容,我要修改Status和index。
代码如下:
config_t cfg;const char* value = nullptr;const char* cfg_data = nullptr;char g_AnyProcessPath[256];config_init(&cfg);// Read the file. If there is an error, report it and exit. if (!config_read_file(&cfg, cfg_filename)) {BLOG_DEBUG("can't open cfg file");return -1;}config_setting_t* Platform = config_lookup(&cfg, "THCommandStatus");int Platform_count = Platform ? config_setting_length(Platform) : 0;for (unsigned int i = 0; i < Platform_count; i++) {int TcpPort = 0;std::string StartRequest = "";std::string StopRequest = "";std::string HoldUri = "";config_setting_t* process_item = config_setting_get_elem(Platform, i);config_setting_t* Status_ = config_setting_get_member(process_item, "Status");config_setting_t* index_ = config_setting_get_member(process_item, "index");switch (i){case 0:config_setting_set_string(Status_, "666");config_setting_set_int(index_, i);break;case 1:config_setting_set_string(Status_, "777");config_setting_set_int(index_, i);break;case 2:config_setting_set_string(Status_, "888");config_setting_set_int(index_, i);break;case 3:config_setting_set_string(Status_, "999");config_setting_set_int(index_, i);break;default:break;}}// 写入文件if (!config_write_file(&cfg, cfg_filename)) {BLOG_DEBUG(fmt::format("Error:{}", config_error_text(&cfg)));}config_destroy(&cfg);
然后修改指定的参数之后,内容如下:
THCommandStatus = (
{
Status = "666";
index = 0;
},
{
Status = "777";
index = 1;
},
{
Status = "888";
index = 2;
},
{
Status = "999";
index = 3;
} );