引:读取配置文件是很常见的,尤其在后台服务器(linux、unix上)跑程序为了扩展性,都常用配置文件作为程序的输入来完成不同的工作内容。本文提供了简单的实现方法:
话不多说,看函数:
- /*
- *parameter: cfgfilepath 文件的绝对路径名如: /user/home/my.cfg
- * key 文本中的变量名
- * value 对应变量的值,用于保存
- *
- *//一般的读取配置文件
- #include <iostream>
- #include <string>
- #include <fstream>
- static bool readConfigFile(const char * cfgfilepath, const string & key, string & value)
- {
- fstream cfgFile;
- cfgFile.open(cfgfilepath);//打开文件
- if( ! cfgFile.is_open())
- {
- cout<<"can not open cfg file!"<<endl;
- return false;
- }
- char tmp[1000];
- while(!cfgFile.eof())//循环读取每一行
- {
- cfgFile.getline(tmp,1000);//每行读取前1000个字符,1000个应该足够了
- string line(tmp);
- size_t pos = line.find('=');//找到每行的“=”号位置,之前是key之后是value
- if(pos==string::npos) return false;
- string tmpKey = line.substr(0,pos);//取=号之前
- if(key==tmpKey)
- {
- value = line.substr(pos+1);//取=号之后
- return true;
- }
- }
- return false;
- }
这里要提的是,文本文件的变量内容应该是如下格式的
id=20
name=bob
address=beijing
Win API
C++读写ini配置文件
(2009-12-10 15:48:23)写入.ini文件:
BOOL WritePrivateProfileStrin
);
读取.ini文件:
DWORD GetPrivateProfileString(
);
读取整形值:(返回值为读到的整)
UINT GetPrivateProfileInt(
);
读写INI文件时相对路径和绝对路径都可以,根据实际情况选择
"..\\IniFileName.ini"
"D:\\IniFileName.ini"
MAX_PATH:是微软最大路径占的字节所设的宏
例子:
写INI文件:
LPTSTR lpPath = new char[MAX_PATH];
strcpy(lpPath, "D:\\IniFileName.ini");
WritePrivateProfileStrin
WritePrivateProfileStrin
WritePrivateProfileStrin
WritePrivateProfileStrin
delete [] lpPath;
INI文件如下:
[LiMing]
Sex=Man
Age=20
[Fangfang]
Sex=Woman
Age=21
读INI文件:
LPTSTR lpPath = new char[MAX_PATH];
LPTSTR LiMingSex = new char[6];
int LiMingAge;
LPTSTR FangfangSex = new char[6];
int FangfangAge;
strcpy(lpPath, "..\\IniFileName.ini");
GetPrivateProfileString("LiMing", "Sex", "", LiMingSex, 6, lpPath);
LiMingAge = GetPrivateProfileInt("LiMing", "Age", 0, lpPath);
GetPrivateProfileString("Fangfang", "Sex", "", FangfangSex, 6, lpPath);
FangfangAge = GetPrivateProfileInt("Fangfang", "Age", 0, lpPath);
delete [] lpPath;