读取当前目录下CIniFile类文件
来源:互联网 发布:淘宝宝贝图片制作软件 编辑:程序博客网 时间:2024/04/29 03:11
//Inifile.h
/*****************************************************************
文件名:读取当前目录下CIniFile类文件
日期:2004-1-18
作者:chao_jie
E_Mail:chaojie2003@yahoo.com.cn
功能:系统提供的WriteProfileInt()等函数,写到注册表或
系统ini文件里,调用比较麻烦,而且会占用注册表资
源,下载了网上的ini类用起来又不太顺手,所以参照
写了一个读取当前目录下ini文件的类。程序有详细的
注释,欢迎批评指正。
*****************************************************************/
/*//////////////////////////////////////////////////////////////////
使用方法:
1.先把IniFile.h,IniFile.ccp加入Porject,在要使用该类的头文件中加入
#include "IniFile.h",及CIniFile IniFile;
2.读取和写入:
string = IniFile.GetString("section","item","默认");
int = IniFile.GetInt("section","item",666);
IniFile.SetString("section","item","设置值");
IniFile.SetInt("section","item",666);
3.ini文件名及路径在初始化时,用SetFileName()设置
注意事项:ini文件如果太长,读取速度会变慢,可以使用多个ini文件
//////////////////////////////////////////////////////////////////*/
// IniFile.h: interface for the CIniFile class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_INIFILE_H__33CAF5C6_7820_43EB_8D84_42CC1856C35C__INCLUDED_)
#define AFX_INIFILE_H__33CAF5C6_7820_43EB_8D84_42CC1856C35C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CIniFile
{
public:
void SetFileName(CString FileName);
void WriteFileString(CString Section, CString Item, CString Value);
CString GetFileString(CString Section, CString Item, CString Value);
CString GetString(CString Section, CString Item, CString Value);
int GetInt(CString Section, CString Item, int Value);
void SetString(CString Section, CString Item, CString Value);
void SetInt(CString Section, CString Item, int Value);
BOOL WriteIniFile();
BOOL ReadIniFile();
CIniFile();
virtual ~CIniFile();
//ini file
CString m_sFileName;
CStdioFile IniFile;
BOOL bFileExist;
CStringArray FileContainer;
};
#endif // !defined(AFX_INIFILE_H__33CAF5C6_7820_43EB_8D84_42CC1856C35C__INCLUDED_)
inifile.cpp
// IniFile.cpp: implementation of the CIniFile class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "IniFile.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CIniFile::CIniFile()
{
m_sFileName = "ini.ini";
}
CIniFile::~CIniFile()
{
if(FileContainer.GetSize() > 0)
{
FileContainer.RemoveAll();
}
}
void CIniFile::SetFileName(CString FileName)
{
m_sFileName = FileName;
}
void CIniFile::SetInt(CString Section, CString Item, int Value)
{
CString strtemp;
// strtemp.Format("%d",Value);
//保存到FileContainer
WriteFileString(Section, Item, strtemp);
//保存到ini文件
WriteIniFile();
}
void CIniFile::SetString(CString Section, CString Item, CString Value)
{
//保存到FileContainer
WriteFileString(Section, Item, Value);
//保存到ini文件
WriteIniFile();
}
CString CIniFile::GetString(CString Section, CString Item, CString Value)
{
return GetFileString(Section, Item, Value);
}
int CIniFile::GetInt(CString Section, CString Item, CString Value)
{
CString strtemp;
// strtemp.Format("%d",Value);
// return atoi(GetFileString(Section, Item, strtemp));
return GetFileString(Section, Item, strtemp);
}
BOOL CIniFile::ReadIniFile()
{
bFileExist=IniFile.Open(m_sFileName, CFile::modeRead);
if(!bFileExist)
{
return FALSE;
}
CString strline;
FileContainer.RemoveAll();
//将IniFile文件数据读到FileContainer
while(IniFile.ReadString(strline))
{
FileContainer.Add(strline);
}
IniFile.Close();
return TRUE;
}
BOOL CIniFile::WriteIniFile()
{
bFileExist=IniFile.Open(m_sFileName, CFile::modeCreate | CFile::modeWrite);
if(!bFileExist)
return FALSE;
CString strline;
//将FileContainer写到IniFile文件
for(int i = 0; i< FileContainer.GetSize(); i++)
{
strline = FileContainer[i];
IniFile.WriteString(strline+"/n");
}
IniFile.Close();
return bFileExist;
}
CString CIniFile::GetFileString(CString Section, CString Item, CString Value)
{
ReadIniFile();//打开文件
if(bFileExist == FALSE || FileContainer.GetSize() < 0)
return Value;//文件打开出错或文件为空,返回默认值
int i = 0;
int iFileLines = FileContainer.GetSize();
CString strline,str;
while(i<iFileLines)
{
strline = FileContainer.GetAt(i++);
strline.TrimLeft();
if(strline.GetAt(0)=='[')//查找Section,第一个必须为[
{
str=strline.Left(strline.Find("]"));//去掉]右边
str=str.Right(str.GetLength()-str.Find("[")-1);//去掉[左边
str.TrimLeft();
str.TrimRight();
if(Section == str)//找到Section
{
while(i<iFileLines)
{
strline = FileContainer.GetAt(i++);
strline.TrimLeft();
if(strline.GetAt(0)=='[')
return Value;//如果到达下一个[],即找不到,返回默认值
str = strline.Left(strline.Find("="));//去掉=右边
str.TrimLeft();
str.TrimRight();
if(Item == str)//找到Item
{
str=strline.Right(strline.GetLength()-strline.Find("=")-1);//去掉=左边
str.TrimLeft();
str.TrimRight();
return str;
}
}
return Value;//找不到,返回默认值
}
}
}
return Value;//找不到,返回默认值
}
void CIniFile::WriteFileString(CString Section, CString Item, CString Value)
{
int i = 0;
int iFileLines = FileContainer.GetSize();
CString strline,str;
while(i<iFileLines)
{
strline = FileContainer.GetAt(i++);
strline.TrimLeft();
if(strline.GetAt(0)=='[')//查找Section,第一个必须为[
{
str=strline.Left(strline.Find("]"));//去掉]右边
str=str.Right(str.GetLength()-str.Find("[")-1);//去掉[左边
str.TrimLeft();
str.TrimRight();
if(Section == str)//找到Section
{
while(i<iFileLines)
{
strline = FileContainer.GetAt(i++);
strline.TrimLeft();
if(strline.GetAt(0)=='[')//如果到达下一个[],即找不到Item
{
break;
}
str = strline.Left(strline.Find("="));//去掉=右边
str.TrimLeft();
str.TrimRight();
if(Item == str)//找到Item
{
strline = Item + "=" + Value;
FileContainer[i-1] = strline;
return;
}
}
//找不到Item
strline = Item + "=" + Value;
FileContainer.InsertAt(i-1, strline);
return;
}
}
}
//找不到Section
//直接在最后加入Section,Item,Value
FileContainer.Add("[" + Section + "]");
FileContainer.Add(Item + "=" + Value);
return;
}
- 读取当前目录下CIniFile类文件
- CIniFile类,读取INI文件
- (转)CIniFile类,读取INI文件
- ini文件操作类 CiniFile
- python读取当前目录下的所有的excel文件
- 读取当前目录的文件
- 读取目录下当前日期的.gz文件并解压的shell脚本
- Node 命令行读取当前目录下的文件(转自《了不起的Node》)
- C++遍历读取文件夹(仅限当前目录而不深入)下的文件
- 一段可以在UNIX下,读取当前目录下所有文件(包括子目录中的文件)的文件名的程序
- file类列出当前目录下的文件
- C源程序:输入当前目录下的文本文件名称,尝试打开文件,逐个字符读取文件内容并显示出来
- 获取当前目录下的所有文件
- 遍历删除当前目录下所有文件
- 查看当前目录下有多少文件
- awk 取当前目录下最大文件
- 当前目录下通用的Makefile文件
- Linux查找当前目录下的文件
- mysql数据库乱码
- crackme2(简单算法)
- 回溯法基本框架
- IOS去掉NavigationBar底部的那条黑线
- CSS基本样式
- 读取当前目录下CIniFile类文件
- 斯坦福机器学习实现与分析之五(高斯判别分析)
- Catalan数计算及应用
- 运动补偿与运动估计
- Linux C/C++ 模板:模板安全
- 在javascript中关于局部变量和全局变量简析
- POJ 1316 Self Numbers
- Android之请求码和返回码
- 修改UIWebView中字体的大小