惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
MyScale Blog
MyScale Blog
Y
Y Combinator Blog
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
V
Vulnerabilities – Threatpost
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
Recorded Future
Recorded Future
N
News and Events Feed by Topic
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 【当耐特】
N
Netflix TechBlog - Medium
博客园 - 叶小钗
B
Blog
Vercel News
Vercel News
T
Tenable Blog
T
The Exploit Database - CXSecurity.com
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Last Week in AI
Last Week in AI
F
Fortinet All Blogs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Microsoft Security Blog
Microsoft Security Blog
S
Securelist
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Palo Alto Networks Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
DataBreaches.Net
Cyberwarzone
Cyberwarzone
Engineering at Meta
Engineering at Meta
Martin Fowler
Martin Fowler
G
GRAHAM CLULEY
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
C
CERT Recently Published Vulnerability Notes
L
LangChain Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Check Point Blog
A
About on SuperTechFans
W
WeLiveSecurity
The GitHub Blog
The GitHub Blog

博客园 - arvin2012

VC++常用方法函数集合, EVC++4.0 长用数据类型转换,FFT算法 指向函数的指针数组到底该怎么用 内存耗尽怎么办? 位运算符的一些简单应用 异步Socket通信总结 贵在坚持 vc++操作word MFC中的ClassWizard的使用 追MM与设计模式的有趣见解 动软.Net代码生成器 发布最新2.12版 vc中常用的方法 vc中读写注册表 c++ file and directory 删除,移动,目录浏览对话框,找某目录下的所有文件(包括子目录) Windows API 技巧集 vc 使用总结 VC 常见的108个问题 VC中动态生成控件 什么是COM,如何使用COM
简单好用的读写ini文件的类
arvin2012 · 2008-07-28 · via 博客园 - arvin2012

IniReader.h

#ifndef INIREADER_H
#define INIREADER_H
class CIniReader
{
public:
 CIniReader(
char* szFileName); 
 
int ReadInteger(char* szSection, char* szKey, int iDefaultValue);
 
float ReadFloat(char* szSection, char* szKey, float fltDefaultValue);
 
bool ReadBoolean(char* szSection, char* szKey, bool bolDefaultValue);
 
char* ReadString(char* szSection, char* szKey, const char* szDefaultValue);
private:
  
char m_szFileName[255];
}
;
#endif//INIREADER_H

IniReader.cpp

#include "IniReader.h"
#include 
<iostream>
#include 
<Windows.h>
CIniReader::CIniReader(
char* szFileName)
{
 memset(m_szFileName, 
0x00255);
 memcpy(m_szFileName, szFileName, strlen(szFileName));
}

int CIniReader::ReadInteger(char* szSection, char* szKey, int iDefaultValue)
{
 
int iResult = GetPrivateProfileInt(szSection,  szKey, iDefaultValue, m_szFileName); 
 
return iResult;
}

float CIniReader::ReadFloat(char* szSection, char* szKey, float fltDefaultValue)
{
 
char szResult[255];
 
char szDefault[255];
 
float fltResult;
 sprintf(szDefault, 
"%f",fltDefaultValue);
 GetPrivateProfileString(szSection,  szKey, szDefault, szResult, 
255, m_szFileName); 
 fltResult 
=  atof(szResult);
 
return fltResult;
}

bool CIniReader::ReadBoolean(char* szSection, char* szKey, bool bolDefaultValue)
{
 
char szResult[255];
 
char szDefault[255];
 
bool bolResult;
 sprintf(szDefault, 
"%s", bolDefaultValue? "True" : "False");
 GetPrivateProfileString(szSection, szKey, szDefault, szResult, 
255, m_szFileName); 
 bolResult 
=  (strcmp(szResult, "True"== 0 || strcmp(szResult, "true"== 0? true : false;
 
return bolResult;
}

char* CIniReader::ReadString(char* szSection, char* szKey, const char* szDefaultValue)
{
 
char* szResult = new char[255];
 memset(szResult, 
0x00255);
 GetPrivateProfileString(szSection,  szKey, szDefaultValue, szResult, 
255, m_szFileName); 
 
return szResult;
}

IniWriter.h

#ifndef INIWRITER_H
#define INIWRITER_H
class CIniWriter
{
public:
 CIniWriter(
char* szFileName); 
 
void WriteInteger(char* szSection, char* szKey, int iValue);
 
void WriteFloat(char* szSection, char* szKey, float fltValue);
 
void WriteBoolean(char* szSection, char* szKey, bool bolValue);
 
void WriteString(char* szSection, char* szKey, char* szValue);
private:
 
char m_szFileName[255];
}
;
#endif //INIWRITER_H

IniWriter.cpp

#include "IniWriter.h"
#include 
<iostream>
#include 
<Windows.h> 
CIniWriter::CIniWriter(
char* szFileName)
{
 memset(m_szFileName, 
0x00255);
 memcpy(m_szFileName, szFileName, strlen(szFileName));
}

void CIniWriter::WriteInteger(char* szSection, char* szKey, int iValue)
{
 
char szValue[255];
 sprintf(szValue, 
"%d", iValue);
 WritePrivateProfileString(szSection,  szKey, szValue, m_szFileName); 
}

void CIniWriter::WriteFloat(char* szSection, char* szKey, float fltValue)
{
 
char szValue[255];
 sprintf(szValue, 
"%f", fltValue);
 WritePrivateProfileString(szSection,  szKey, szValue, m_szFileName); 
}

void CIniWriter::WriteBoolean(char* szSection, char* szKey, bool bolValue)
{
 
char szValue[255];
 sprintf(szValue, 
"%s", bolValue ? "True" : "False");
 WritePrivateProfileString(szSection,  szKey, szValue, m_szFileName); 
}

void CIniWriter::WriteString(char* szSection, char* szKey, char* szValue)
{
 WritePrivateProfileString(szSection,  szKey, szValue, m_szFileName);
}

Main.cpp

#include "iostream"
#include 
"IniWriter.h"
#include 
"IniReader.h"
int main(int argc, char * argv[])
{
 CIniWriter iniWriter(
".\\Logger.ini");
 iniWriter.WriteString(
"Setting""Name""jianxx");   
 iniWriter.WriteInteger(
"Setting""Age"27); 
 iniWriter.WriteFloat(
"Setting""Height"1.82f); 
 iniWriter.WriteBoolean(
"Setting""Marriage"false);  
 CIniReader iniReader(
".\\Logger.ini");
 
char *szName = iniReader.ReadString("Setting""Name""");   
 
int iAge = iniReader.ReadInteger("Setting""Age"25); 
 
float fltHieght = iniReader.ReadFloat("Setting""Height"1.80f); 
 
bool bMarriage = iniReader.ReadBoolean("Setting""Marriage"true); 
 
 std::cout
<<"Name:"<<szName<<std::endl
   
<<"Age:"<<iAge<<std::endl 
   
<<"Height:"<<fltHieght<<std::endl 
   
<<"Marriage:"<<bMarriage<<std::endl; 
 delete szName;  
 
return 1;   
}