我正在使用libconfig在我的C ++游戏中读取/配置文件。
现在我只有一个名为video.cfg的配置文件:
#Video config file
video:
{
fps:
{
limited = true;
value = 20;
};
};
此配置文件处理游戏的视频设置。
我正在尝试编写一个非常基本的控制台程序,它根据用户输入修改此值。但是我不知道该怎么做。我在libconfig手册中找不到任何内容,谷歌也没有。
那么如何在Libconfig中编辑值?
答案 0 :(得分:3)
#include <libconfig.h>
int main() {
config_t cfg;
config_setting_t *vid_fps_lim = 0;
config_setting_t *vid_fps_val = 0;
config_init(&cfg);
if (config_read_file(&cfg, "myconfig") == CONFIG_TRUE) {
/* lookup the settings we want */
vid_fps_lim = config_lookup(&cfg, "video.fps.limited");
vid_fps_val = config_lookup(&cfg, "video.fps.value");
/* print the current settings */
printf("video.fps.limited = %i\n", config_setting_get_bool(vid_fps_lim));
printf("video.fps.value = %i\n", config_setting_get_int(vid_fps_val));
/* modify the settings */
config_setting_set_bool(vid_fps_lim, 1);
config_setting_set_int(vid_fps_val, 60);
/* write the modified config back */
config_write_file(&cfg, "myconfig");
}
config_destroy(&cfg);
return 0;
}
我命名文件“lcex.c”和配置文件“myconfig”它使用以下内容在我的Debian Linux机器上构建和运行...
gcc `pkg-config --cflags libconfig` lcex.c -o lcex `pkg-config --libs libconfig`
./lcex
运行应用程序后打开配置文件,您会看到值已更新。
免责声明...错误处理遗漏,使其更容易阅读。我没有使用-Wall等构建。与任何API一样,阅读文档并处理潜在的错误。
答案 1 :(得分:1)
我在搜索将libconfig写入输出到字符串而不是文件的方法时遇到了这个问题。我看到这里没有可接受的答案,所以我想我会为后人提供一个,即使这个问题已经超过3年了。
#include <stdint.h>
#include <string>
#include "libconfig.h++"
int32_t
main (void) {
libconfig::Config config;
std::string file = "test.conf";
try {
config.readFile(file.c_str());
libconfig::Setting &limited = config.lookup("video.fps.limited");
libconfig::Setting &value = config.lookup("video.fps.value");
limited = false;
value = 60;
config.writeFile(file.c_str());
}
catch (...) {
// Do something reasonable with exceptions here. Do not catch (...)
}
return 0;
}
希望能帮助别人!