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 ...
随机推荐
- POJ-2752 Seek the Name, Seek the Fame(KMP,前缀与后缀相等)
题意: 给出一个字符串str,求出str中存在多少子串,使得这些子串既是str的前缀,又是str的后缀.从小到大依次输出这些子串的长度. 这个就是next数组的应用,next数组真是很深奥啊. ...
- [物理学与PDEs]第2章 流体力学
[物理学与PDEs]第2章第1节 理想流体力学方程组 1.1 预备知识 [物理学与PDEs]第2章第1节 理想流体力学方程组 1.2 理想流体力学方程组 [物理学与PDEs]第2章第1节 理想流体力学 ...
- [物理学与PDEs]第3章 磁流体力学
[物理学与PDEs]第3章第1节 等离子体 [物理学与PDEs]第3章第2节 磁流体力学方程组 2.1 考虑到导电媒质 (等离子体) 的运动对 Maxwell 方程组的修正 [物理学与PDEs]第3章 ...
- 【JavaScript】允许IE8使用placeholder
var placeholder = function ($element) { var $ = window.jQuery; var version = parseFloat($.browser.ve ...
- ylbtech-Unitity-CS:AnonymousDelegates
ylbtech-Unitity-CS:AnonymousDelegates 1.A,效果图返回顶部 1.B,源代码返回顶部 1.B.1, using System; using System.Co ...
- 配置jetty 远程调试
该调试不支持hessian 接口调用 1.配置远程jetty 服务器的 bin/jetty.sh JAVA_OPTIONS+=("-Xdebug -Xrunjdwp:server=y,tra ...
- 使用系统UITabbarItem自定义图片显示原本颜色和自定义文字颜色
...... ThirdViewController *thirdVC = [[ThirdViewControlleralloc]initWithTitle:@"搜索信息"]; / ...
- WCF z
终结点与服务寄宿 由于最近可能要使用WCF做开发,开始重读蒋金楠的<WCF全面解析>,并整理个人学习WCF的笔记. 蒋金楠的书是我的第一本WCF入门书,虽说硬着头皮啃下来了,但是原理内容太 ...
- 学习vim命令:“:w !sudo tee %”
学习vim命令:“:w !sudo tee %” Original URL:http://www.haw-haw.org/node/1501 原文来自于commandlinefu 原文是这样解释这个命 ...
- ZK框架的分析与应用
前言:本文是在下的在学习ZK官方文档时整理出来的初稿.本来里面有很多的效果图片和图片代码的.奈何博客园中图片不能粘贴上去,所以感兴趣的筒子们就将就吧.内容中,如有不好的地方,欢迎斧正! ZK框架的分析 ...