C++读取ini文件的类
取自:http://www.viksoe.dk/code/all_mfc.htm,里面有各种MFC常用的类
// Ini.h: interface for the CIni class.
//
// Written by Bjarke Viksoe (bjarke@viksoe.dk)
// Copyright (c) 2000.
//
// This code may be used in compiled form in any way you desire. This
// file may be redistributed by any means PROVIDING it is
// not sold for profit without the authors written consent, and
// providing that this notice and the authors name is included.
//
// This file is provided "as is" with no expressed or implied warranty.
// The author accepts no liability if it causes any damage to you or your
// computer whatsoever. It's free, so don't hassle me about it.
//
// Beware of bugs.
//////////////////////////////////////////////////////////////////////// #if !defined(AFX_INI_H__2478E9E2_E904_11D1_93C1_241C08C10000__INCLUDED_)
#define AFX_INI_H__2478E9E2_E904_11D1_93C1_241C08C10000__INCLUDED_ #if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
//
// INI file class
//
// Author:
// Bjarke Viks鴈
// Description:
// Implements helper functions to access
// an .INI configuration file using
// conventional CString operations
// // Ini-file wrapper class
class CIni : public CObject
{
public:
CIni();
CIni( LPCTSTR IniFilename );
virtual ~CIni(); // Methods
public:
// Sets the current Ini-file to use.
RETCODE SetIniFilename(LPCTSTR IniFilename);
//
// Reads an integer from the ini-file.
UINT GetInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault=);
// Reads a boolean value from the ini-file.
BOOL GetBoolean(LPCTSTR lpszSection, LPCTSTR lpszEntry, BOOL bDefault=FALSE);
// Reads a string from the ini-file.
CString GetString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszDefault=NULL);
// Reads a binaryt lump of data from the ini-file.
BOOL GetBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry, BYTE** ppData, UINT* pBytes);
//
// Writes an integer to the ini-file.
BOOL WriteInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue);
// Writes a boolean value to the ini-file.
BOOL WriteBoolean(LPCTSTR lpszSection, LPCTSTR lpszEntry, BOOL bValue);
// Writes a string to the ini-file.
BOOL WriteString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszValue);
// Writes a binary lump of data to the ini-file.
BOOL WriteBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPBYTE pData, UINT nBytes);
// Writes an 'expand string' to the ini-file.
BOOL WriteExpandString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszValue);
//
// Removes an item from the current ini-file.
BOOL DeleteKey(LPCTSTR lpszSection, LPCTSTR lpszEntry);
// Removes a complete section from the ini-file.
BOOL DeleteSection(LPCTSTR lpszSection); // Variables
protected:
CString m_IniFilename; // The current ini-file used.
}; #endif // !defined(AFX_INI_H__2478E9E2_E904_11D1_93C1_241C08C10000__INCLUDED_)
Ini.cpp
// Ini.cpp: implementation of the CIni class.
// Author: Bjarke Viks鴈
//
// Description:
// Thin wrapper around the Win32 Windows Profile (Ini-file configuration)
// interface.
//
////////////////////////////////////////////////////////////////////// #include "stdafx.h"
#include "Ini.h" #ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif //////////////////////////////////////////////////////////////////////
// Construction/Destruction
////////////////////////////////////////////////////////////////////// CIni::CIni()
{
m_IniFilename.Empty();
} CIni::CIni(LPCTSTR IniFilename)
{
SetIniFilename( IniFilename );
} CIni::~CIni()
{
// Flush .ini file
// (This should perhaps not be here. We risk to slow
// down the system and this would be done at a more appropriate
// time by the OS scheduler anyway)
::WritePrivateProfileString( NULL, NULL, NULL, m_IniFilename );
} //////////////////////////////////////////////////////////////////////
// Methods
////////////////////////////////////////////////////////////////////// #define MAX_INI_BUFFER 300 // Defines the maximum number of chars we can
// read from the ini file RETCODE CIni::SetIniFilename(LPCTSTR IniFilename)
{
ASSERT(AfxIsValidString(IniFilename));
m_IniFilename = IniFilename;
if( m_IniFilename.IsEmpty() ) return RET_INVALIDARGS;
return RET_OK;
}; UINT CIni::GetInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault)
{
ASSERT(AfxIsValidString(lpszSection));
ASSERT(AfxIsValidString(lpszEntry));
if( m_IniFilename.IsEmpty() ) return ; // error
CString sDefault;
sDefault.Format( _T("%d"), nDefault );
CString s = GetString( lpszSection, lpszEntry, sDefault );
return _ttol( s );
}; CString CIni::GetString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszDefault)
{
ASSERT(AfxIsValidString(lpszSection));
ASSERT(AfxIsValidString(lpszEntry));
if( m_IniFilename.IsEmpty() ) return CString();
CString s;
long ret = ::GetPrivateProfileString( lpszSection, lpszEntry, lpszDefault, s.GetBuffer( MAX_INI_BUFFER ), MAX_INI_BUFFER, m_IniFilename );
s.ReleaseBuffer();
if( ret== ) return CString(lpszDefault);
return s;
}; BOOL CIni::GetBoolean(LPCTSTR lpszSection, LPCTSTR lpszEntry, BOOL bDefault)
{
CString s = GetString(lpszSection,lpszEntry);
if( s.IsEmpty() ) return bDefault;
TCHAR c = _totupper( s[] );
switch( c ) {
case _T('Y'): // YES
case _T(''): // 1 (binary)
case _T('O'): // OK
return TRUE;
default:
return FALSE;
};
}; BOOL CIni::GetBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry, BYTE** ppData, UINT* pBytes)
{
ASSERT(AfxIsValidString(lpszSection));
ASSERT(AfxIsValidString(lpszEntry));
return FALSE;
}; BOOL CIni::WriteInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue)
{
ASSERT(AfxIsValidString(lpszSection));
ASSERT(AfxIsValidString(lpszEntry));
CString s;
s.Format( _T("%d"), nValue );
return WriteString( lpszSection, lpszEntry, s );
}; BOOL CIni::WriteBoolean(LPCTSTR lpszSection, LPCTSTR lpszEntry, BOOL bValue)
{
CString s;
bValue ? s=_T("Y") : s=_T("N");
return WriteString( lpszSection, lpszEntry, s );
}; BOOL CIni::WriteString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszValue)
{
ASSERT(AfxIsValidString(lpszSection));
ASSERT(AfxIsValidString(lpszEntry));
if( m_IniFilename.IsEmpty() ) return RET_NOTINITIALIZED;
return ::WritePrivateProfileString( lpszSection, lpszEntry, lpszValue, m_IniFilename );
}; BOOL CIni::WriteBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPBYTE pData, UINT nBytes)
{
ASSERT(AfxIsValidString(lpszSection));
ASSERT(AfxIsValidString(lpszEntry));
return FALSE;
}; BOOL CIni::WriteExpandString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszValue)
{
ASSERT(AfxIsValidString(lpszSection));
ASSERT(AfxIsValidString(lpszEntry));
return FALSE;
}; BOOL CIni::DeleteKey(LPCTSTR lpszSection, LPCTSTR lpszEntry)
{
ASSERT(AfxIsValidString(lpszSection));
ASSERT(AfxIsValidString(lpszEntry));
if( m_IniFilename.IsEmpty() ) return RET_NOTINITIALIZED;
return ::WritePrivateProfileString( lpszSection, lpszEntry, NULL, m_IniFilename );
}; BOOL CIni::DeleteSection(LPCTSTR lpszSection)
{
ASSERT(AfxIsValidString(lpszSection));
if( m_IniFilename.IsEmpty() ) return RET_NOTINITIALIZED;
return ::WritePrivateProfileString( lpszSection, NULL, NULL, m_IniFilename );
};
C++读取ini文件的类的更多相关文章
- C#读取ini文件的方法
最近项目用到ini文件,读取ini文件,方法如下: using System; using System.Collections.Generic; using System.Linq; using S ...
- [IO] C# INI文件读写类与源码下载 (转载)
/// <summary> /// 类说明:INI文件读写类. /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:[url]http://www.sufei ...
- Ini文件操作类
/// <summary> /// Ini文件操作类 /// </summary> public class Ini { // 声明INI文件的写操作函数 WritePriva ...
- Ini文件帮助类
.ini文件是什么 .ini 文件是Initialization File的缩写,就是初始化文件.在Windows系统中,其是配置文件所采用的存储格式(主要是system.ini,win.ini,sy ...
- 读写INI文件操作类
详情介绍:http://zh.wikipedia.org/wiki/INI%E6%96%87%E4%BB%B6 示例: 下面是一个虚拟的程序,其INI文件有两个小节,前面的小节是用来设置拥有者的信息, ...
- C# 读取ini文件 百度问问学习文档
C# 读取ini文件 10 有多个section,现想读取整个ini文件和指定section下所有内容 补充: 发布答案可以,请对准题目啊,我不要指定节点的内容,我知道!我要的是读取指定区域的内容,假 ...
- python中configparser模块读取ini文件
python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...
- C# 如何实现完整的INI文件读写类
作者: 魔法软糖 日期: 2020-02-27 引言 ************************************* .ini 文件是Initialization File的缩写,即配置文 ...
- java读取ini文件
ini工具类; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import j ...
随机推荐
- BestCoder Round #85 hdu5776 sum
sum 题意: 问题描述 给定一个数列,求是否存在连续子列和为m的倍数,存在输出YES,否则输出NO 输入描述 输入文件的第一行有一个正整数T,表示数据组数. 接下去有T组数据,每组数据的第一行有两个 ...
- wpf mvvm使用问题集锦
问题一.usercontrol1控件使用了mvvm数据绑定,usercontrol2也使用了mvvm数据绑定,则 以下是伪代码 <usercontrol2 datacontent="{ ...
- 创建指定日期java Date对象
import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import ...
- C++学习44 格式化输出,C++输出格式控制
在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式输出一个 整数,对输出的小数只保留两位小数等.有两种方法 ...
- [ActionScript 3.0] 跨域策略文件crossdomain.xml配置详解
1.简介 flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及允许从什么地方跨域读写数据. 位于www.a.com域中的SWF文件要访 ...
- [ActionScript 3.0] AS3 获取函数参数个数
function createFunction(param1:String,param2:String,param3:int=0):void { trace(arguments.length);//a ...
- SAP_20140304
1. SAP 主打产品 R/3 :分布式 客户端/服务器 环境的标准ERP软件. 2. 主要功能模块:销售和分销,物料管理,生产计划,质量管理,工厂维修,人力资源,工业方案,办公室和通信,项目系统 ...
- [POJ 1385] Lifting the Stone (计算几何)
题目链接:http://poj.org/problem?id=1385 题目大意:给你一个多边形的点,求重心. 首先,三角形的重心: ( (x1+x2+x3)/3 , (y1+y2+y3)/3 ) 然 ...
- Django: TemplateDoesNotExist at /admin/
最近用virtualenv 总出现 Django: TemplateDoesNotExist at /admin/的问题,报错TemplateDoesNotExist at /admin/admin/ ...
- SQL Server参数化查询中应用Like
一般情况下是SQL语句: Select * From Users Where UserName Like 'Lin%' Select * From Users Where UserName Like ...