取自: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文件的类的更多相关文章

  1. C#读取ini文件的方法

    最近项目用到ini文件,读取ini文件,方法如下: using System; using System.Collections.Generic; using System.Linq; using S ...

  2. [IO] C# INI文件读写类与源码下载 (转载)

    /// <summary> /// 类说明:INI文件读写类. /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:[url]http://www.sufei ...

  3. Ini文件操作类

    /// <summary> /// Ini文件操作类 /// </summary> public class Ini { // 声明INI文件的写操作函数 WritePriva ...

  4. Ini文件帮助类

    .ini文件是什么 .ini 文件是Initialization File的缩写,就是初始化文件.在Windows系统中,其是配置文件所采用的存储格式(主要是system.ini,win.ini,sy ...

  5. 读写INI文件操作类

    详情介绍:http://zh.wikipedia.org/wiki/INI%E6%96%87%E4%BB%B6 示例: 下面是一个虚拟的程序,其INI文件有两个小节,前面的小节是用来设置拥有者的信息, ...

  6. C# 读取ini文件 百度问问学习文档

    C# 读取ini文件 10 有多个section,现想读取整个ini文件和指定section下所有内容 补充: 发布答案可以,请对准题目啊,我不要指定节点的内容,我知道!我要的是读取指定区域的内容,假 ...

  7. python中configparser模块读取ini文件

    python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...

  8. C# 如何实现完整的INI文件读写类

    作者: 魔法软糖 日期: 2020-02-27 引言 ************************************* .ini 文件是Initialization File的缩写,即配置文 ...

  9. java读取ini文件

    ini工具类; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import j ...

随机推荐

  1. [实变函数]3.2 可测集 (measurable set)

    1 $\bbR^n$ 中集合 $E$ 称为可测的 (measurable), 如果 $$\bee\label{3.2:Caratheodory} m^*T=m^*(T\cap E)+m^*(T\cap ...

  2. [复变函数]第05堂课 1.4 复球面与 $\infty$; 作业讲解; 2 解析函数 2.1 解析函数的概念与 Cauchy-Riemann 方程

    1. 复球面 大漠孤烟直, 长河落日圆. $$\bex \bbC\cong \bbS^2\bs \sed{N},\quad \bbC_\infty=\bbC\cup \sed{\infty}\mbox ...

  3. 数据库事务 及ACID

    数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永 ...

  4. android-Service和Thread的区别

    1.服务不是单一的进程.服务没有自己的进程,应用程序可以不同,服务运行在相同的进程中. 2.服务不是线程.可以在线程中工作. 一.在应用中,如果是长时间的在后台运行,而且不需要交互的情况下,使用服务. ...

  5. SSH学习笔记目录

    1.Spring_2000_Spring_Hibernate_HibernateTemplate

  6. vacabulary1

    The hard hat is rigid,so nothing will hurt my head. glue 胶水vegetarian 素食者: 素食主义者:素食的 North Korea 朝鲜S ...

  7. WebService中实现上传下载文件

    不多说,直接看代码: /*上传文件的WebService*/ using System; using System.Collections; using System.Collections.Gene ...

  8. WCF和WebService中获取当前请求报文的方法

    WCF中: 1. 在hosting WCF的web.config中加入: <system.serviceModel> <serviceHostingEnvironment aspNe ...

  9. [ActionScript] AS3 绘制虚线

    import flash.geom.Point; import flash.display.MovieClip; import flash.display.Graphics; function dra ...

  10. Grid++Report的几点总结

    一.同事解决方案: 1.在View文件夹下建立报表文件A,用来作为报表呈现的载体.这个页面负责加载报表模板与加载数据源.其中报表模板由于后缀名为grf,在MVC中不做任何修改的情况下,系统会做路由处理 ...