C++ 读写INI文件

不能用VC的高级类,只能用C++怎么实现读写INI文件?... 不能用VC的高级类,只能用C++怎么实现读写INI文件? 展开
 我来答
foong_79
2012-02-14 · TA获得超过731个赞
知道小有建树答主
回答量:424
采纳率:100%
帮助的人:485万
展开全部
给你做个例子,挺长的,我也不多解释,你自己看看学习吧:
你可以自己创建一个test.ini文件, 写入以下内容做测试:
[Application]
Key=my key

代码如下:
#include <stdio.h>
#include <string.h>
#include <conio.h>

int GetINIData(const char *szApp,const char *szKey,
const char *szDefault,
char *szOut,const int nOut,
const char *szFileName)
{
if (!szApp||!szKey||!szOut||!szFileName) return -1;

if (szDefault)
strncpy(szOut,szDefault,nOut);
else
*szOut=0;

FILE *hFile;
hFile=fopen(szFileName,"r");
if (!hFile) return -1;

const int BUFFER_SIZE=1024;
char szHeadApp[256];

char szBuffer[BUFFER_SIZE]={0};
int nResult=-1;

_snprintf(szHeadApp,sizeof(szHeadApp),"[%s]",szApp);

//search app
while (!feof(hFile))
{
if (fgets(szBuffer,BUFFER_SIZE,hFile))
{
if (szBuffer[strlen(szBuffer)-1]=='\n')
szBuffer[strlen(szBuffer)-1]=0;
if (strcmp(szBuffer,szHeadApp)==0) break;
}
else
goto FUNC_EXIT;
}

//search for key
while (!feof(hFile))
{
if (fgets(szBuffer,BUFFER_SIZE,hFile))
{

char *szEqual=strstr(szBuffer,"=");

if (szEqual)
{
*szEqual=0;

if (strcmp(szBuffer,szKey)==0)
{
szEqual++;

while (*szEqual==' ') szEqual++;
strncpy(szOut,szEqual,nOut);
nResult=0;
}
}
}
else goto FUNC_EXIT;
}

FUNC_EXIT:
fclose(hFile);
return nResult;
}

int main(void)
{
char szOut[256];
GetINIData("Application","Key","default var",szOut,sizeof(szOut),"test.ini");
printf("data: %s\n",szOut);
getch();
return 0;
}
mil3w0rm
2012-02-14
知道答主
回答量:10
采纳率:0%
帮助的人:4.5万
展开全部
如果不涉及跨平台的话,仅在Windows平台上有Windows API可以直接调用
读取
GetPrivateProfileString
DWORD WINAPI GetPrivateProfileString(
__in LPCTSTR lpAppName, //程序名,即[]中的字符串
__in LPCTSTR lpKeyName, //关键字,即等号前的字符串
__in LPCTSTR lpDefault, //如果查询项为空,默认返回的值
__out LPTSTR lpReturnedString, //用于返回值的缓冲区
__in DWORD nSize, //返回缓冲区的大小
__in LPCTSTR lpFileName //文件名
);
写入的话
BOOL WINAPI WritePrivateProfileString(
__in LPCTSTR lpAppName,
__in LPCTSTR lpKeyName,
__in LPCTSTR lpString,
__in LPCTSTR lpFileName
);
参数可参上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式