概述
近来整理一下资料,把有些东西归类一下。
需要读写ini文件的资料。网上找了两个。
第一个,是.h和.cpp版本不同。
第二个,函数声明太含糊,不方便使用者调用。
索性花点时间自己写一个。(首先确定,一定要简单实用,别人一看就明白。)
完整工程:http://zhmster.googlepages.com/opini.rar
提醒注意:ini文件和exe文件必须在同个目录。
//
OPini.h: interface for the COPini class.
//
//
// ***************************************************************
// OPini version: 1.0 ? date: 07/19/2007
// -------------------------------------------------------------
// 这个类用来读取exe下ini文件的内容。
// -------------------------------------------------------------
// Copyright (C) 2007 - All Rights Reserved
// ***************************************************************
//
// ***************************************************************
# 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 <afxwin.h>
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 version: 1.0 ? date: 07/19/2007
// -------------------------------------------------------------
// 这个类用来读取exe下ini文件的内容。
// -------------------------------------------------------------
// Copyright (C) 2007 - All Rights Reserved
// ***************************************************************
//
// ***************************************************************
# 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 <afxwin.h>
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 "OPini.h"
/* *******************************************************************
created: 2007/07/19
created: 19:7:2007 10:13
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
date: // 2007.07.19
***************************************************************************** */
/*
void error(LPSTR lpszFunction)
{
CHAR szBuf[80];
DWORD dw = GetLastError();
sprintf(szBuf, "%s failed: GetLastError returned %un",
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
date: // 2007.07.19
***************************************************************************** */
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 <stdio.h>
# include "opini.h"
void main()
{
char stringtoread[ 200 ];
COPini :: ReadString( " group " , " item " , stringtoread , " test.ini " );
char stringtoadd[] = " hello1 " ;
COPini :: WriteString( " group " , " item " , stringtoadd , " test.ini " );
return ;
}
# include "opini.h"
void main()
{
char stringtoread[ 200 ];
COPini :: ReadString( " group " , " item " , stringtoread , " test.ini " );
char stringtoadd[] = " hello1 " ;
COPini :: WriteString( " group " , " item " , stringtoadd , " test.ini " );
return ;
}
最后
以上就是魁梧白昼为你收集整理的vc读取INI文件(原创,简单,实用,注释详细)的全部内容,希望文章能够帮你解决vc读取INI文件(原创,简单,实用,注释详细)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复