VC读写ini文件(第三方开源类)
Windows自带的也有几个API函数,比如GetPrivateProfileString、WritePrivateProfileStrinig等函数,使用起来确实不方面....
就在很久前就看到了下面这样一个三方类,很方面的,而今很多友友在寻找这方面DEMO,所以再次贴来出现大家分享!
// ***************************************************************
// OPini.h: interface for the COPini class.
// -------------------------------------------------------------
// 这个类用来读取exe下ini文件的内容。
// -------------------------------------------------------------
// ***************************************************************
#if !defined(AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED_)
#define AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include
class COPini
{
public:
static DWORD ReadString (char *section, char * key, char stringtoread[], char * filename);
static BOOL WriteString(LPCTSTR section, LPCTSTR key,char* stringtoadd, char *filename);
COPini();
virtual ~COPini();
};
#endif // !defined(AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED_)
// OPini.cpp: implementation of the COPini class.
//
//
#include "stdafx.h"
#include "OPini.h"
/********************************************************************
filename: // OPini.cpp
file path:
file base: // OPini
file ext: // cpp
author: // alantop
purpose: // 读取INI文件。
*********************************************************************/
//
// Construction / Destruction
//
COPini::COPini()
{
}
COPini::~COPini()
{
}
/*****************************************************************************
Function: //
Description: // 写字符串到INI文件
Calls: //
Called By: //
Table Accessed: //
Table Updated: //
Input: //
Output: //
Return: // 成功返回真,失败返回假.失败后,可用DWORD GetLastError(VOID)
查询失败原因。
Others: //
author: // alantop
******************************************************************************/
void error(LPSTR lpszFunction)
{
CHAR szBuf[80];
DWORD dw = GetLastError();
sprintf(szBuf, "%s failed: GetLastError returned %u/n",
lpszFunction, dw);
MessageBox(NULL, szBuf, "Error", MB_OK);
ExitProcess(dw);
}
BOOL COPini::WriteString(LPCTSTR section, LPCTSTR key, char *stringtoadd, char *filename)
{
CHAR FilePath[255];
GetModuleFileName(NULL,FilePath,255);
//Scan a string for the last occurrence of a character.
(strrchr(FilePath,'//'))[1] = 0;
strcat(FilePath,filename);
return ::WritePrivateProfileString(section,key,stringtoadd,FilePath);
}
/*****************************************************************************
Function: //
Description: // 从INI文件中读取字符串
Calls: //
Called By: //
Table Accessed: //
Table Updated: //
Input: //
Output: //
Return: // 读取了多少个字节的字符
Others: //
author: // alantop
******************************************************************************/
DWORD COPini::ReadString(char *section, char * key, char stringtoread[], char * filename)
{
CHAR FilePath[255];
GetModuleFileName(NULL,FilePath,255);
(strrchr(FilePath,'//'))[1] = 0;
strcat(FilePath,filename);
return ::GetPrivateProfileString(section, key,NULL,stringtoread,255,FilePath);
}
因为是静态函数,你可以直接使用作用域调用函数,具体使用方法,将上述文件添加到你的工程,然后引入头文件即可:
#include
int main()
{
char *p1 = "Hello";
char *p2 ;
COPini::WriteString("配置信息", "选项1", p1, "setinfo.ini");
COPini::ReadString("配置信息" , "选项2", p2, "setinfo.ini");
.....
}
(在MFC程序中,你可以在初始化函数读取配置信息,在退出代码中写入配置信息即可)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~