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

相关文章

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返