取自: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. pycharm 格式化代码

    有时候将空格键和tab键混用,在windows上没什么事情,但是如果移动到linux就会有问题,所以我们在移动到linux上之前要先格式化一下代码: ctrl+alt+L可以格式化,但是和锁屏快捷键冲 ...

  2. python (16) 如何在linux下安装lxml(pip安装,ubuntu下,centos下)

    首先需要明白lxml包依赖其他包,必须先安装其他包然后再安装lxml 安装python-pip:方便安装python的第三方包 [root@******/]# wget https://bootstr ...

  3. A+B问题 涉及EOF

    输入将包括一系列对的整数a和b,通过一空间,一对每行整数分离的.  产量 对于每对输入的整数a和b你应该输出的a和b的总和在一行,并用输出的一个行中输入每一行.  样本输入 1 5  2 3  样本输 ...

  4. JAVA 处理程序异常,(try、catch、finally),(thorws)

    一.try语句: try{//这里写可能出现异常的程序} catch(Exception e){//这里写如果出现异常怎么处理的程序} 二.throws语句 语法:函数方法()  throws Exc ...

  5. Guava 9-I/O

    字节流和字符流 Guava使用术语”流” 来表示可关闭的,并且在底层资源中有位置状态的I/O数据流.术语”字节流”指的是InputStream或OutputStream,”字符流”指的是Reader ...

  6. nfs不能自动mount(转载)

    From:http://www.wenzizone.com/2009/08/14/nfs_can_not_automount_supplementary.html 手动挂载nfs没有问题,说明port ...

  7. vim常用命令笔记(转载)

    添加多行注释:   1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;   2. 在行首使用上下键选择需要注释的多行;   3. 按下键盘(大写)“I”键,进入插入模式 ...

  8. arm-linux-objdump

    一.arm-linux-objdump常用来显示二进制文件信息,常用来查看反汇编代码二.常用选项:1.-b bfdname 指定目标码格式2.—disassemble或者-d 反汇编可执行段3.—di ...

  9. springMVC3 ckeditor3.6 图片上传 JS回调

    一.引入js文件 <script type="text/javascript" src="<%=base %>/resources/ckeditor/c ...

  10. How to Release the Temp LOB Space and Avoid Hitting ORA-1652 (文档 ID 802897.1)

    APPLIES TO: Oracle Database - Enterprise Edition - Version 8.1.5.0 and laterInformation in this docu ...