Windows API 读写.ini文件相关函数

2024-08-30 03:04

本文主要是介绍Windows API 读写.ini文件相关函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

        .ini文件常作为软件启动设置信息存储的文件,内容与jsonl有一定的相似,主要都是以键值对的形式进行数据存储。本文主要介绍Windows系统为我们提供的读写.ini文件的函数——---GetPrivateProfileInt和WritePrivateProfileString

正文

ini文件

        ini文件内容主要格式:

         节:[section]

         参数:键 = 值 (键值对)

       示例:

[Section1 Name]KeyName1=value1
KeyName2=value2[Section2 Name]KeyName3=value3
KeyName4=value4

 KeyName1、KeyName2属于节 Section1,同理  KeyName3、KeyName4属于节 Section2;

 读ini文件:GetPrivateProfileInt

        读ini文件就需要使用Windows API-- GetPrivateProfileInt函数

        函数原型

UINT GetPrivateProfileInt(  LPCTSTR lpAppName, // 节的名称  LPCTSTR lpKeyName, // 键的名称  INT     nDefault,  // 如果找不到键,则返回的默认值  LPCTSTR lpFileName // 初始化文件的名称  
);

函数参数类型 :LPCTSTR 

        它是一个宏定义,由几个部分组成:

        1.LP表示long pointer  : 长指针类型

        2.C表示const : 指针指向的内容为常量

        3.T代表在Win32环境中可能存在的_T宏,用于兼容Unicode和ANSI字符串;(具体不太清楚)

        4.STR表示这个变量是一个字符串

函数参数类型 :UINT

        无符号整型

函数参数类型 :INT

        整型

示例:

[Window]  
Width=800  
Height=600  [Colors]  
BackgroundColor=12345  
ForegroundColor=65432
int main() {  // 初始化变量来存储从INI文件中读取的值  int width, height, backgroundColor;  // 从settings.ini文件的[Window]节中读取Width和Height  width = GetPrivateProfileInt("Window", "Width", 800, "settings.ini"); // 如果找不到Width,则默认为800  height = GetPrivateProfileInt("Window", "Height", 600, "settings.ini"); // 如果找不到Height,则默认为600  // 注意:BackgroundColor在这个例子中被当作整数处理,但在实际中它可能是颜色代码字符串  // 这里我们假设INI文件中的BackgroundColor已经是一个整数  backgroundColor = GetPrivateProfileInt("Colors", "BackgroundColor", 0, "settings.ini"); // 如果找不到BackgroundColor,则默认为0  // 输出读取的值  std::cout << "Window Width: " << width << std::endl;  std::cout << "Window Height: " << height << std::endl;  std::cout << "Background Color (Integer): " << backgroundColor << std::endl;  return 0;  
}

注意事项

        1.GetPrivateProfileInt只能检索特定节(section)或键(key)的值。

        2.返回值是一个无符号整数(UINT),它对应于 INI 文件中指定键名后面的字符串的整数等效值。如果 INI 文件中找到了指定的节名和键名,并且该键名的值可以被成功转换为整数,那么函数就会返回这个整数值。

写ini文件:WritePrivateProfileString

         函数原型

BOOL WritePrivateProfileString(  LPCTSTR lpAppName,   // 节的名称  LPCTSTR lpKeyName,   // 键的名称  LPCTSTR lpString,    // 与键关联的字符串值  LPCTSTR lpFileName   // 初始化文件的名称  
);

         示例

int main() {  // 要写入的 INI 文件路径  const char* iniFilePath = "settings.ini";  // 写入 [Window] 节下的 Width 和 Height  if (!WritePrivateProfileString("Window", "Width", "800", iniFilePath)) {  std::cerr << "Failed to write Width to INI file." << std::endl;  }  if (!WritePrivateProfileString("Window", "Height", "600", iniFilePath)) {  std::cerr << "Failed to write Height to INI file." << std::endl;  }  // 写入 [Colors] 节下的 BackgroundColor 和 ForegroundColor  // 注意:虽然颜色代码通常是十六进制字符串,但这里我们仍然以字符串形式写入  // 在实际应用中,你可能需要将这些十六进制字符串转换为整数(如果适用),然后再写回为十六进制字符串  if (!WritePrivateProfileString("Colors", "BackgroundColor", "00FF00", iniFilePath)) { // 绿色  std::cerr << "Failed to write BackgroundColor to INI file." << std::endl;  }  if (!WritePrivateProfileString("Colors", "ForegroundColor", "FF0000", iniFilePath)) { // 红色  std::cerr << "Failed to write ForegroundColor to INI file." << std::endl;  }  // 如果需要,可以检查 INI 文件以验证写入是否成功  // 这里我们仅打印一条消息表示写入操作已完成  std::cout << "INI file has been updated successfully." << std::endl;  return 0;  
}

         注意事项

         WritePrivateProfileString 函数总是返回非零值以表示成功,除非出现了某种严重的错误

这篇关于Windows API 读写.ini文件相关函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119618

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

MySQL主从复制与读写分离的用法解读

《MySQL主从复制与读写分离的用法解读》:本文主要介绍MySQL主从复制与读写分离的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、主从复制mysql主从复制原理实验案例二、读写分离实验案例安装并配置mycat 软件设置mycat读写分离验证mycat读