C++读取配置文件

一、要想读取配置文件首先要学会写配置文件,那么配置文件是什么结构呢?请看下图:

在这里插入图片描述
配置文件由两部分构成:字段名和键名。可以看到我圈出来两个颜色的方框,其中红色的两个方框就是字段名,每个字段下包含其字段的键名和键值,蓝色的方框就是键名和键值。

二、知道配置文件的结构之后我们就可以读配置文件了,

读配置文件要用到函数GetPrivateProfileString();看一下函数说明
DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName);

头文件:
windows.h
返回值 :

DWORD -----------------------------返回字符串的实际大小,根据系统环境不同失败返回值不同(0或-1)?
网上查找到的资料返回-1,我的实际系统返回0,返回值一定要自己验证!!!

形参:

LPCTSTR lpAppName ---------- INI配置文件中的一个字段名,也就是上图中红色方框中的内容,这个字串不区分大小写;
LPCTSTR lpKeyName ---------- INI配置文件下的一个key键名,也就是上图中蓝色方框的内容,这个字 串不区分大小写;
LPCTSTR lpDefaut ----------------如果配置文件中没有找到前两个的参数值,则将此参数默认值赋给变量。一般设为空("");
LPSTR lpReturnedString ---------指定一个字符串缓冲区,用来接收INI文件中的返回值的CString对象;
DWORD nSize ----------------------指的是前一个参数对象的缓冲区的大小
LPCTSTR lpFileName ------------完整的INI文件路径名

举个例子还是上图中的配置文件,现在我要读取config下的Port字符:

char port[20];	//接收配置文件字符的缓冲区
DWORD res;		//返回值
res= GetPrivateProfileString("config", "Port", "", port, sizeof(port), "config.ini");
三、如果现在我们需要写配置文件呢

读配置文件要用到函数WritePrivateProfileString();看一下函数说明
bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);
参数基本同读配置文件,
返回值为bool类型,返回是否写成功
直接举例子吧:我要在配置文件config.ini下写一个config2字段中的一个ip键值

bool res;		//返回值
res= WritePrivateProfileString("config2", "Ip", "192.168.0.12", "config.ini");
三、注意事项
找不到配置文件

有些环境中GetPrivateProfileString函数找不到配置文件中的配置文件需要加路径,注意是绝对路径,如果用绝对路径也找不到的话,注意在windows下路径中的/斜杠为\双反斜杠。

获当前路径

如果不想在程序中写死配置文件路径的话,则需要获取当前路径,可以用函数GetCurrentDirectory来获取当前路径,转换为string再加上\+配置文件名称就可以得到配置文件的绝对路径。

char current_Dir[1024] = { 0 };

DWORD res = GetCurrentDirectory(1024, current_Dir);
//res判断省略

string str_Dir = current_Dir;
str_Dir += "\\configure.ini";//绝对路径为str_Dir

char get_Info[1024] = { 0 };
res = GetPrivateProfileString("字段", "键名", "默认值", get_Info, 1024, str_Dir.c_str());
//res 判断省略

你学会了吗?

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值