VC读写ini文件

原创 2007年09月13日 11:17:00

VC读写ini文件

关于ini文件读写的API函数 有下列这些:

GetPrivateProfileInt 
GetPrivateProfileSection 
GetPrivateProfileSectionNames 
GetPrivateProfileString 
GetPrivateProfileStruct 
GetProfileInt 
GetProfileSection 
GetProfileString 
WritePrivateProfileSection 
WritePrivateProfileString 
WritePrivateProfileStruct 
WriteProfileSection 
WriteProfileString
注:关于这些函数的详细解释请参考MSDN

为更好的了解ini文件的操作,下面给出一个实例,希望能起到抛砖引玉的作用:

#if !defined AFX_INI_HEAR_H
#define AFX_INI_HEAR_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/*
 *  ver 1.0.0.0
 *   读写ini文件的内容
 *   johnchen
 */
#define  MAX_KEYS 1024
#include "afxtempl.h"
class CIni
{
public:
 CIni();
 ~CIni();
 void SetIniPathName(CString strFileName);
    void GetValueByKey(CString strAppName,CString strKey,CString & strValue);
 void SetValueByKey(CString strAppName,CString strKey,CString strValue);
 int GetValueByAppName(CList<int,int> & listKey,CList<CString,CString&> & listValue,CString strAppName="sealremarktype"); // 根据字段得到所有键值
private:
 CString m_strIniPathName;
};

#endif

#include <stdafx.h>
#include "ini.h"

CIni::CIni()
{
 CString strBuffer;
 char szBuffer[MAX_PATH];
 memset(szBuffer,0,MAX_PATH);
 ::GetCurrentDirectory(MAX_PATH,(LPSTR)strBuffer.GetBuffer(MAX_PATH));
    strcpy(szBuffer,(char *)strBuffer.GetBuffer(MAX_PATH));
 strcat(szBuffer,"//sealremark.ini");
    m_strIniPathName = szBuffer;
}

CIni::~CIni()
{
   
}

// 设置ini文件路径
void CIni::SetIniPathName(CString strFileName)
{
    m_strIniPathName = strFileName;
}

// 得到键值
void CIni::GetValueByKey(CString strAppName,CString strKey,CString & strValue)
{
 GetPrivateProfileString(strAppName.GetBuffer(strAppName.GetLength()),strKey.GetBuffer(strKey.GetLength()),"公章",strValue.GetBuffer(MAX_PATH),MAX_PATH,m_strIniPathName);
}

// 设定键值
void CIni::SetValueByKey(CString strAppName,CString strKey,CString strValue)
{
    ::WritePrivateProfileString(strAppName.GetBuffer(strAppName.GetLength()),strKey.GetBuffer(strKey.GetLength()),strValue.GetBuffer(strValue.GetLength()),m_strIniPathName);
}

// 函数功能:根据字段得到所有键值
// 参数说明:
// listKey 键
// listValue 值
// strAppName 字段
// 返回值:int 键值数量
int CIni::GetValueByAppName(CList<int,int> & listKey,CList<CString,CString&> & listValue,CString strAppName)
{
 TCHAR charKeyName[MAX_KEYS];
 memset(charKeyName,0,sizeof(TCHAR)*MAX_KEYS);
 int iNum = 0; // 键值总数
 DWORD dw = GetPrivateProfileSection(strAppName.GetBuffer(strAppName.GetLength()),charKeyName,MAX_KEYS,m_strIniPathName);
 if(dw==0)  // 没有记录
 {
  return iNum;
 }
 for(int i=0;i<MAX_KEYS;i++)
 {
  if(charKeyName[i]==0)
  {
   iNum++;
   if(charKeyName[i]==charKeyName[i+1])
    break;
  }
 }
 int iCount = iNum,iPos = 0,iOldPos=0,j=0;
 TCHAR szKey[128],szValue[128];
 CString strTemp = "";

 for(i=0;i<=dw;i++)
    {
  if(charKeyName[i]==0)
  {
   iCount--;
   iPos = i;
   memset(szKey,0,128*sizeof(TCHAR));
   memset(szValue,0,128*sizeof(TCHAR));
   for(j=iOldPos;j<iPos;j++)
   {
    if(charKeyName[j]=='=')
    {
     memcpy(szKey,&charKeyName[iOldPos],j-iOldPos);
     memcpy(szValue,&charKeyName[j+1],iPos-j-1);
     listKey.AddTail((int)atoi(szKey));
     strTemp = szValue;
     listValue.AddTail(strTemp);
     iOldPos = iPos+1;
     break;
    }
   }
  }
    }
 
 return iNum;
}

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

VC++读写ini文件的方法

  • 2014-09-12 15:27
  • 46KB
  • 下载

VC使用tinyxml读写INI,cfg,XML配置文件

#define UPDATE_CONFIG "update.cfg" //客户端版本信息文件 //解析Update.cfg文件TiXmlDocument UpdateCfgDoc(UPDATE_CON...

vc源码ini文件读写类

  • 2010-06-29 11:21
  • 17KB
  • 下载

VC++读写INI文件demo

  • 2016-11-22 22:16
  • 59KB
  • 下载

在VC++中读写INI文件

在VC++中读写INI文件  在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下:一.将信息写入.INI...

VC读写INI文件.txt

VC读写INI文件(转)

我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下:  一.将信息写入.INI文件中.  1.所用的WIN...

在VC中读写ini配置文件

配置文件中经常用到ini文件,在VC中其函数分别为:  写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKey...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)