class ConfFile

key=value型の簡単な初期設定ファイルを扱うクラス

定義

#include <conffile.h>
class ConfFile
メンバーシップ関数機能
ConfFile(void)コンストラクタ
ConfFile(const char *pFileName)コンストラクタ
~ConfFile(void)ディストラクタ
void Clear(void)初期化
bool ReadFile(const char *pFileName)初期設定ファイルを読み込む
bool SaveFile(void)初期設定ファイル保存
bool GetValue(const char *pKey,bool pDefault)keyを指定してvalueを得る
int GetValue(const char *pKey,int pDefault)keyを指定してvalueを得る
double GetValue(const char *pKey,double pDefault)keyを指定してvalueを得る
string GetValue(const char *pKey,const char *pDefault)keyを指定してvalueを得る
void SetValue(const char *pKey,bool pVal)keyを指定してvalueを設定する
void SetValue(const char *pKey,int pVal)keyを指定してvalueを設定する
void SetValue(const char *pKey,double pVal)keyを指定してvalueを設定する
void SetValue(const char *pKey,const char *pVal)keyを指定してvalueを設定する
bool KeyExist(const char *pKey)keyが存在するかどうか
void DelKey(const char *pKey)keyを削除する
void ToBeSaved(bool true|false)保存フラグを設定・解除する
int GetData(map <string,string> *&v)初期設定値をkey , valueの組で取得する

説明

key=value型の簡単な初期設定ファイルを扱うクラスです。
PerlやPHPはソースファイルを配布しますので、例えば、画像ファイルの場所やログファイル名など、ユーザーの環境や使用方法に合わせてプログラムの一部を変えることが簡単にできます。しかし、C/C++はコンパイラで実行ファイルを配布することもあるので、これらが簡単にできない場合があります。このような場合のために、初期設定ファイルを利用します。

class ConfFileがサポートするのは、次のようにkey=valueからなる簡単な初期設定ファイルです。

#configure file
img_dir=./img1
log_file=./test.log
mode=check1
key=value
"#" , ";" , "//" で始まる行はコメントとして無視されます。漢字コードはEUC、改行コードはLFです。keyとvalueは = で結ばれ、空白を入れてはいけません(空白も文字列の一つとして認識します)。keyに予約語やC++ for CGIで使われる変数名、漢字を用いてはいけません。
SetValue関数で、クラスの内部が変更されている場合、ディストラクタが実行されるときに値が保存されます。

使用例

初期設定ファイル(prog.conf)
#configure file
img_dir=./img1
log_file=./test.log
mode=true
X=15
Y=20
log=true
プログラム
int		gX,gY;
string	gImg_dir;
bool	gMode;

InitProgram()
{
	ConfFile	*aConfFile;

	aConfFile = new ConfFile("prog.conf");
	gX = GetValue("X",0);
	gY = GetValue("Y",0);
	gImg_dir = GetValue("img_dir","img");
	gMode = GetValue("mode",false);
	delete aConfFile;
}

TermProgram()
{
	ConfFile	*aConfFile;

	aConfFile = new ConfFile("prog.conf");
	SetValue("X",gX);
	SetValue("Y",gY);
	SetValue("img_dir",gImg_dir.c_str());
	SetValue("mode",gMode);
	delete aConfFile;
}