转载:https://blog.csdn.net/fan380485838/article/details/73188420

在实际项目开发中,会用ini配置文件,在此总结一下对ini读写操作

一:读ini配置文件

DWORD GetPrivateProfileString(
LPCTSTR lpAppName, 
LPCTSTR lpKeyName, 
LPCTSTR lpDefault, 
LPTSTR lpReturnedString, 
DWORD nSize, 
LPCTSTR lpFileName 
);
   其中各参数的意义: 
   lpAppName 根节点name.
lpKeyName 子节点name
   lpDefault : 如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量. 
   lpReturnedString : 接收INI文件中的值的CString对象,即目的缓存器.
   nSize : 目的缓存器的大小.
   lpFileName : 是完整的INI文件名.

二:写ini配置文件

BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);
  其中各参数的意义:
   LPCTSTR lpAppName 是INI文件中的一个字段名.
   LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.
   LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.
   LPCTSTR lpFileName 是完整的INI文件名.

完整代码:

#include <iostream>
#include <atlstr.h>
using namespace std; void ReadIniFile(LPCWSTR lpFilePath)
{
CString strClass, strName, strAge, strSex, strGrade; //读ini配置文件
::GetPrivateProfileString(_T("StudentInfo"), _T("Class"), _T(""), strClass.GetBuffer(MAX_PATH), MAX_PATH, lpFilePath);
::GetPrivateProfileString(_T("StudentInfo"), _T("Name"), _T(""), strName.GetBuffer(MAX_PATH), MAX_PATH, lpFilePath);
::GetPrivateProfileString(_T("StudentInfo"), _T("Age"), _T(""), strAge.GetBuffer(MAX_PATH), MAX_PATH, lpFilePath);//以字符串形式读取
int age = ::GetPrivateProfileInt(_T("StudentInfo"), _T("Age"), , lpFilePath);//返回值是value
::GetPrivateProfileString(_T("StudentInfo"), _T("Sex"), _T(""), strSex.GetBuffer(MAX_PATH), MAX_PATH, lpFilePath);
::GetPrivateProfileString(_T("StudentInfo"), _T("Grade"), _T(""), strGrade.GetBuffer(MAX_PATH), MAX_PATH, lpFilePath);
} void WriteIniFile(LPCWSTR lpFilePath)
{
CString strClub, strPlayer, strNation, strAge, strGrade;
strClub = "Barcelona";
strPlayer = "Messi";
strNation = "Argentina";
strAge = "";
strGrade = "superstar"; ::WritePrivateProfileString(_T("Team"), _T("Club"), strClub, lpFilePath);
::WritePrivateProfileString(_T("Team"), _T("player"), strPlayer, lpFilePath);
::WritePrivateProfileString(_T("Team"), _T("nationality"), strNation, lpFilePath);
::WritePrivateProfileString(_T("Team"), _T("Age"), strAge, lpFilePath);
::WritePrivateProfileString(_T("Team"), _T("Grade"), strGrade, lpFilePath); } int main()
{ wchar_t szFileFullPath[MAX_PATH];
::GetModuleFileName(NULL, szFileFullPath, MAX_PATH);//获取文件路径
wstring strPath = szFileFullPath;
strPath = strPath.substr(, strPath.rfind('\\') + );
strPath += L"demo.ini"; //写ini配置文件
//WriteIniFile(strPath.c_str()); //读ini配置文件
ReadIniFile(strPath.c_str());
return ;
}

三:配置文件格式:

[StudentInfo]
Class=
Name=tom
Age=
Sex=男
Grade=优秀
[Team]
Club=Barcelona
player=Messi
nationality=Argentina
Age=
Grade=superstar

四:如下需要注意下:
   1.INI文件的路径必须完整,文件名前面的各级目录必须存在,否则写入不成功,该函数返回 FALSE 值.
   2.文件名的路径中必须为 \\ ,因为在VC++中, \\ 才表示一个 \ .
   3.也可将INI文件放在程序所在目录,此时 lpFileName 参数为: ".\\demo.ini".
           4:如果配置文件中有中文字符,需要修改下配置文件的格式。例如将配置文件重新命名为ASCII码格式。

VC++ 实现INI文件读写操作的更多相关文章

  1. C#实现.ini文件读写操作

    1.ini文件是什么?        见百度百科:https://baike.baidu.com/item/ini%E6%96%87%E4%BB%B6/9718973?fr=aladdin 2.C#语 ...

  2. QSettings配置读写-win注册表操作-ini文件读写

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSettings配置读写-win注册表操作-ini文件读写     本文地址:http:// ...

  3. Delphi对ini文件的操作

    一.INI文件的结构:; 注释[小节名]关键字=值 INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值. 值的类型有三种:字符串.整型数值和布尔值.其中字符串存贮在INI ...

  4. C#对INI文件读写

    C#本身没有对INI格式文件的操作类,可以自定义一个IniFile类进行INI文件读写. using System; using System.Collections.Generic; using S ...

  5. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  6. [转]Android - 文件读写操作 总结

     转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...

  7. Delphi ini文件读写

    参考:http://www.cnblogs.com/zhangzhifeng/archive/2011/12/01/2270267.html 一.ini文件的结构 ;这是关于 ini 文件的注释 [节 ...

  8. PHP文件读写操作之文件写入代码

    在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势,但是文件读写操作在基本的PHP开发 ...

  9. Java 字节流实现文件读写操作(InputStream-OutputStream)

    Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下. 字符流地址:http://pengyan5945.iteye.com/b ...

随机推荐

  1. Java基础学习笔记十九 File

    IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据 ...

  2. PM2.5环境检测系统的设计与分析

    PM2.5环境检测系统的设计与分析   摘要: 大气颗粒物污染对人类健康和生态环境造成了很大的影响,这让人们逐渐重视起对细颗粒物PM2.5检测技术的研究.本文阐述了PM2.5浓度检测的五种方法,在对上 ...

  3. npm笔记

    #执行npm start时是运行的哪个js文件? 打开package.json看看scripts属性中start配置的是什么运行脚本,这里配置的就是你执行npm start时跑的脚本 #设置npm的源 ...

  4. 注解@RestController与@Controller的区别

    开发RESTful API 时,一般都会在Controller上加上@Controller注解,但是有时候加上@RestController,当同事问为什么的时候,我也一脸懵逼,默默的看了资料,现在就 ...

  5. 快速构建一个使用axios的vue应用程序(转)

    英文原文:https://www.sitepoint.com/fetching-data-third-party-api-vue-axios/ 译文:https://segmentfault.com/ ...

  6. JDBC最原始的代码做查询操作

    首先编写一个User类. public class User { private String username; private String password; public String get ...

  7. C#编程基础(简单概述与理解)

    1.C#变量和数据输入 C#常用到的几个数据类型: 整型:int 说明:32位有符号整数 范围:-2³¹~2³¹-1 浮点型:double 说明:64位双精度浮点数 范围:±5.0×10-­﹣³²~± ...

  8. Python Built-in Function 学习笔记

    Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ...

  9. 【Java】NO.83.Tool.1.GlassFish.1.001-【GlassFish 5 安装使用】-

    1.0.0 Summary Tittle:[Java]NO.83.Tool.1.GlassFish.1.001-[GlassFish 5 安装使用]- Style:EBook Series:Java ...

  10. Tomcat出现The origin server did not find a current representation for the target resourc...

    访问页面出现404 解决方法: https://blog.csdn.net/dbc_121/article/details/79204340 我的问题主要还是在tomcat调整上, 对了,关于loca ...