スキップしてメイン コンテンツに移動

簡易設定ファイルパーサー by C++

簡易設定ファイルパーサー

概要

簡易的な設定ファイルパーサー、結構面白いアイディアで、昔先生から教わったものです。
C++ で書いている。
自作ゲームでゲームパッドのキーコンフィグ保存用に使っていた物が原型である。

本論

ソースコード

test.cpp
/*
 * Easy config parser
 * 簡易設定ファイルパーサー
 * jskny
*/

#include <iostream>
#include <string>
#include <map>
#include <cstdio>


using namespace std;


map<string, int> g_config;


bool SetConfigData(const char* const key, int val)
{
 if (!key) {
  return (false);
 }


 g_config[key] = val;
 return (true);
}


int GetConfigData(const char* const key)
{
 if (!key) {
  return (false);
 }


 return (g_config[key]);
}


int main(int argc, char* argv[])
{
 // 設定ファイル
 const char* const urlFile = "./config.txt";

 FILE* fp;
 fp = fopen(urlFile, "r");
 if (fp == NULL) {
  cerr << "file is not found." << endl;
  return (-1);
 }


 int line = 0;
 char buf[300];
 while (true) {
  int v = 0;
  int r = EOF;
  ++line;

  // [key 1234] という形式
  r = fscanf(fp, "%s%d", buf, &v);
  if (r == EOF) {
   break;
  }

// TODO: Debug mode only. erase.
cout << "[debug] line " << line << " into " << buf << "," << v << endl;


  SetConfigData(buf, v);
 }


 fclose(fp);
 fp = NULL;


 // Get data.
 cout << "Get config data." << endl;
 cout << "Is debug ? " << GetConfigData("debug") << endl;
 cout << "Is debug ? " << (GetConfigData("debug") == 1 ? "yes" : "no") << endl;
 cout << "test is = " << GetConfigData("test") << endl;
 cout << "end." << endl;


 return (0);
}

設定ファイル

config.txt
debug 1
test 100020

結果

[debug] line 1 into debug,1
[debug] line 2 into test,100020
Get config data.
Is debug ? 1
Is debug ? yes
test is = 100020
end.

感想

面白いアイディアだと思う。
以上

このブログの人気の投稿

node.js で SQLite を async を使用して同期的に使用する

node.js で SQLite を async を使用して同期的に使用する node.js で SQLite を使うと何が怖いって非同期処理って所。
どのようにコードが動くのか分かり辛い。

そこで同期処理っぽくしてみたい。


async というライブラリを使用するとそれっぽいことができるそうなのでサンプルを書いた。

記述試験の書き方(仮)

記述試験の書き方(仮) 1,まえがき   法学部の試験では記述式の試験が出てくる。   その試験では、あるテーマについて自由に論ぜよとされている。 しかし、論ぜよと言われても、どのように論じればいいのか、すなわち、記述の仕方について教わったことがない(よくよく考えると、法的文章力を習得させる事だけが目的の授業はないと思われる)。   本稿では、私自身が法学畜になり、見聞きし、実際に活用している論述方法についてまとめている、はずである。その要点は、①条文、判例、学説を使う。②単なる事実と法的事実を区別する。③文章内に一貫性を持たせる。である。