ini,配置文件相关的函数,配置文件是个好东西,特别对于大型的项目,或者资源文件特别多的,或者是服务器端这种重启一下要很久的程序,只要有reload函数,动态的在程序里载入配置,对于写在配置里的东西就可以直接改变了。
因此,推荐一些常变的东西写在配置或者脚本里,会方便特别多,甚至可以直接交给策划写,想怎么变都随他,再也不用担心一个东西返工好多次。
ini里的函数都很简单,所有的都是成对出现的(一个set,一个get),写入和读取都有。
void CALL HGE_Impl::Ini_SetInt(const char *section, const char *name, int value)
{
char buf[256];
if(szIniFile[0]) {
sprintf(buf,"%d",value);
WritePrivateProfileString(section, name, buf, szIniFile);
}
}
int CALL HGE_Impl::Ini_GetInt(const char *section, const char *name, int def_val)
{
char buf[256];
if(szIniFile[0]) {
if(GetPrivateProfileString(section, name, "", buf, sizeof(buf), szIniFile))
{ return atoi(buf); }
else { return def_val; }
}
return def_val;
}
这些函数要说的没什么,全部都是依靠两个函数实现的,WritePrivateProfileString和GetPrivateProfileString
想了一下最直观的方法就是放一个例子在这里。
用这两个函数的配置文件是这样的格式:
[NETWORK]
ServerIP=100.100.100.53
其中[]里的代表section
SeverIP代表name
ip地址代表要写入或者读取的buf
要独取上面的ini只要把ini放在程序同一个目录,然后调用GetPrivateProfileString("NETWORK","ServerIP","", buf,sizeof(ip), "Server.ini")
读取出来的是string,需要其他类型转换就可以。例如这里掉用atoi转成int
其他的几个都类似
void CALL HGE_Impl::Ini_SetFloat(const char *section, const char *name, float value)
{
char buf[256];
if(szIniFile[0]) {
sprintf(buf,"%f",value);
WritePrivateProfileString(section, name, buf, szIniFile);
}
}
float CALL HGE_Impl::Ini_GetFloat(const char *section, const char *name, float def_val)
{
char buf[256];
if(szIniFile[0]) {
if(GetPrivateProfileString(section, name, "", buf, sizeof(buf), szIniFile))
{ return (float)atof(buf); }
else { return def_val; }
}
return def_val;
}
void CALL HGE_Impl::Ini_SetString(const char *section, const char *name, const char *value)
{
if(szIniFile[0]) WritePrivateProfileString(section, name, value, szIniFile);
}
char* CALL HGE_Impl::Ini_GetString(const char *section, const char *name, const char *def_val)
{
if(szIniFile[0]) GetPrivateProfileString(section, name, def_val, szIniString, sizeof(szIniString), szIniFile);
else strcpy(szIniString, def_val);
return szIniString;
}
配置文件这块还有一部分文件管理的,不过不属于读写这一块。