引用头文件
#include<windows>
函数介绍
主要用到函数说明:
- GetPrivateProfileInt(LPCSTR lpAppName, LPCSTR lpKeyName,INT nDefault,LPCSTR lpFileName);
- GetPrivateProfileString(LPCSTR lpAppName,LPCSTR lpKeyName,LPCSTR lpDefault,LPSTR lpReturnedString,DWORD nSize,LPCSTR lpFileName);
- WritePrivateProfileString(LPCSTR lpAppName,LPCSTR lpKeyName, LPCSTR lpString, LPCSTR lpFileName);
参数说明:
- LPCSTR lpAppName 指的是配置文件的节的名称
- LPCSTR lpKeyName 指的是配置文件的节中的key的名称
- INT nDefault 指的是获取当前key时,若当前key不存在则返回默认值。默认值可置0.
- LPCSTR lpFileName 指的是配置文件的位置。
- LPCSTR nDefault 指的是获取当前key时,若当前key不存在则返回默认值。默认值可置NULL.
- LPSTR lpReturnedString 指的是存放当前key的value值的参数。
- DWORD nSize 这个值要大于key的value值得长度,才能正确获取到value值。
- LPCSTR lpString 指的是key的value值。
代码
config.ini
[type]
type=家禽-野生动物-中药
[家禽]
num=3
value1=猫
value2=狗
value3=鸡
[野生动物]
num=3
value1=狼
value2=大象
value3=狮子
[中药]
num=2
value1=当归
value2=人参
LPTSTR与string相互转化
//string to LPTSTR
LPTSTR Lkey = new char[512];
string skey = "key";
Lkey = const_cast<char *>(skey.c_str());
//LPTSTR to string
LPTSTR Lvalue = "当归";
string svalue = (string)Lvalue;
代码
int main()
{
double start = GetTickCount();
std::string types,stemp,svalue,sret;
int num = 0;
LPTSTR Value = new char[1024];
LPTSTR Ltemp = new char[512];
LPTSTR Lkey = new char[512];
std::vector<std::string>vtype;
bool bflag=true;
LPTSTR lpPath = ".\\config.ini";
GetPrivateProfileString("type", "type", "NULL", Value, 512, lpPath);
types = (std::string)Value;
while (bflag)
{
stemp = types.substr(types.find_last_of("-") + 1, types.size());
types = types.substr(0, types.find_last_of("-"));
vtype.emplace_back(stemp);
if (types.find("-") == std::string::npos)
{
vtype.emplace_back(types);
bflag = false;
}
}
for (const auto &it : vtype)
{
printf("[%s]::", it.c_str());
Ltemp = const_cast<char *>(it.c_str());
num = GetPrivateProfileInt(Ltemp, "num", 0, lpPath);
printf("[%d]", num);
for (int i = 0; i < num; i++)
{
std::string skey = "value";
skey = skey + std::to_string(i + 1);
Lkey = const_cast<char *>(skey.c_str());
GetPrivateProfileString(Ltemp, Lkey, "NULL", Value, 100, lpPath);
svalue = (std::string)Value;
printf("[%s]", svalue.c_str());
}
printf("\n");
}
double end = GetTickCount();
double total = (end - start) / 1000;
printf("%.8lf\n", total);
system("pause");
return 0;
}
尊重原创,转载请留地址。^o^