2025年ini配置文件&解析(C++)

ini配置文件&解析(C++)ini 解析学习文档 一 什么是 Ini ini 文件是 Initializati File 的缩写 即初始化文件 通常存放的是一个程序的初始化信息 是 Windows 的系统配置文件所采用的存储格式 统管 windows 的各项配置 ini 文件的后缀名不一定是 ini 也可以是 cfg conf

大家好,我是讯享网,很高兴认识大家。

ini解析学习文档

一.什么是Ini

ini文件是Initialization File的缩写,即初始化文件,通常存放的是一个程序的初始化信息,是Windows的系统配置文件所采用的存储格式,统管windows的各项配置。ini文件的后缀名不一定是.ini,也可以是.cfg.conf或者是.tx*


二.ini文件格式&语法规范

ini文件由若干个节(section)组成,每个section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的section中相应的Key的值,而这只要借助几个函数即可完成。

  • 参数(Parameter)ini文件包含的最基本元素是参数参数包含参数名(name)参数值(value),格式如下:
    name=value 

    讯享网
  • 节(section):所有的参数都是以为单位结合在一起。名称独占一行,在节声明后的所有的参数都属于该没有结束标识符,一个section的开始就是上一个section的结束。格式如下:
    讯享网[section] 
  • 注释(comments)注释用分号;表示,放在注释之前,;号后直到行尾均为注释。示例如下:
    ;i wish nothing but the best for you 
  • 文件实例
    讯享网[owner] name=WU yanzu organization=The United Nations [UserConfig] OpenDownloadFileAtOnec=Y WindowStyle=DevExpress Dark Style [Language] Language=CHS [AutoUpdate] Version=2.10 ;last version:2.08 

三.系统解析函数

#include <windows.h> 
1. 向ini文件中写入信息
  1. 写入字符串(string)

将信息写入系统的win.ini文件

讯享网BOOL WriteProfileString( LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串 LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。若为NULL,则删除整个节 LPCTSTR lpString // 键的值,是一个以0结束的字符串。若为NULL,则删除对应的键 ) 

例:

::WriteProfileString("owner","name","WU yanzu"); 

将信息写入自己创建的.ini文件


讯享网

讯享网BOOL WritePrivateProfileString( LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串 LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。若为NULL,则删除整个节 LPCTSTR lpString, // 键的值,是一个以0结束的字符串。若为NULL,则删除对应的键 LPCTSTR lpFileName // 要写入的文件的文件名。相对或绝对路径 ) 

例:

::WritePrivateProfileString("family","name","Liu dehua","D:\GAME\Steam\hhh.ini"); 
  1. 写入整数值(int):没有相关函数,可以通过WriteProfileString进行参数转换实现
2.从ini文件中读取信息
  1. 从系统文件win.ini中读取信息

读取字符串(string)

讯享网DWORD GetProfileString( LPCTSTR lpAppName, // 节名 LPCTSTR lpKeyName, // 键名,读取该键的值 LPCTSTR lpDefault, // 若指定的键不存在,该值作为读取的默认值 LPTSTR lpReturnedString, // 一个指向缓冲区的指针,接收读取的字符串 DWORD nSize // 指定lpReturnedString指向的缓冲区的大小 ) 

例:

CString str; ::GetProfileString("owner","name","WU yanzu",str.GetBuffer(20),20); 

读取整数(int)

讯享网UINT GetProfileInt( LPCTSTR lpAppName, // 节名 LPCTSTR lpKeyName, // 键名,读取该键的值 INT nDefault // 若指定的键名不存在,该值作为读取的默认值 ) 

例:

int num; num=::GetProfileInt("record","Phonenumber",); 
  1. 从自己创建的.ini文件中读取信息

读取字符串(string)

讯享网DWORD GetPrivateProfileString( LPCTSTR lpAppName, // 节名 LPCTSTR lpKeyName, // 键名 LPCTSTR lpDefault, // 若指定的键不存在,该值作为读取的默认值 LPTSTR lpReturnedString, // 一个指向缓冲区的指针,接收读取的字符串 DWORD nSize, // 指定lpReturnedString指向的缓冲区的大小 LPCTSTR lpFileName // 读取信息的文件名。相对路径/绝对路径。 ) 

例:

CString str; ::GetPrivateProfileString("owner","name","WU yanzu",str.GetBuffer(20),20,"D:\GAME\Steam\hhh.ini"); 

读取整数(int)

讯享网UINT GetPrivateProfileInt( LPCTSTR lpAppName, // 节名 LPCTSTR lpKeyName, // 键名 INT nDefault, // 若指定的键名不存在,该值作为读取的默认值 LPCTSTR lpFileName // 读取信息的文件名。相对路径/绝对路径。 ) 

例:

int num; num=::GetPrivateProfileInt("record","Phonenumber",,".//dd.ini"); 
  1. 读取.ini文件中所有Section:使用GetPrivateProfileSectionNames函数
讯享网DWORD GetPrivateProfileSectionNames( LPTSTR lpszReturnBuffer, // 指向一个缓冲区,用来保存返回的所有节名 DWORD nSize, // 参数lpszReturnBuffer的大小 LPCTSTR lpFileName // 文件名,相对路径/绝对路径 ) //返回所有节名的字节个数(包含结束符'\0') 
  1. 读取.ini文件中指定Section中的所有的key=value:使用GetPrivateProfileSection函数
DWORD GetPrivateProfileSection( LPCTSTR lpAppName, // 节名 LPTSTR lpReturnedString, // 一个指向缓冲区的指针,接收读取的字符串 DWORD nSize, // 指定lpReturnedString指向的缓冲区的大小 LPCTSTR lpFileName // 文件名,相对路径/绝对路径 ) //返回所有节名的字节个数(包含结束符'\0') 

四.系统解析函数读取规则

讯享网1. 从遇到的第一个'['开始读,直到遇到第一个']'立即结束读取返回节名 2. 节的'['和']'必须在同一行,即仅对单行读取 3. ';'号后面全部视为注释,节名后面的注释不读取,键值后面的注释会读取 4. 若键值为整形,则只读取键值中第一个非整形字符左侧的整形 5. 忽略'['到第一个字符之间的所有空格,忽略']'到前一个字符之间的所有空格 6. 字符之间的空格不会被忽略,第一个字符到最后一个字符之间的所有内容均视为节名 7. 节可以只有节名没有内容 
小讯
上一篇 2025-01-09 08:15
下一篇 2025-02-14 12:44

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/48188.html