0

C++ ゲームで構成ファイルを読み書きするために libconfig を使用しています。

現在、video.cfg という名前の構成ファイルが 1 つだけあります。

#Video config file
video:
{
    fps:
    {
      limited = true;
      value = 20;
    };
};

この構成ファイルは、ゲームのビデオ設定を処理します。

ユーザー入力に基づいてこの値を変更する非常に基本的なコンソール プログラムを作成しようとしています。しかし、これを行う方法がわかりません。libconfigマニュアルには何も見つかりませんし、Googleにも何も見つかりません。

では、Libconfig で値を編集するにはどうすればよいでしょうか。

4

2 に答える 2

4
#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」という名前を付けました。これは、次を使用してDebianLinuxマシン上でビルドおよび実行されます...

gcc `pkg-config --cflags libconfig` lcex.c -o lcex `pkg-config --libs libconfig`

./lcex

アプリの実行後に構成ファイルを開くと、値が更新されていることがわかります。

免責事項...読みやすくするためにエラー処理は省略されています。-Wallなどを使用してビルドしませんでした。他のAPIと同様に、ドキュメントを読み、潜在的なエラーを処理します。

于 2012-05-01T02:56:12.137 に答える