当前位置: 首页 > news >正文

Windows C++ 读取、修改配置文件.ini

目录

一、INI文件基础介绍

二、GetPrivateProfileString和WritePrivateProfileString

解释:


一、INI文件基础介绍

        INI文件(初始化文件)是一种简单的文本文件,用于存储程序的配置设置。它们通常用于Windows操作系统环境中,但也可以在其他操作系统中使用。INI文件以简单的键值对格式存储数据,使其易于读取和修改。这种文件格式非常适合存储程序的首选项和配置信息。

        INI文件由多个节(Section)组成,每个节可以包含多个键(Key)和相应的值(Value)。节通过方括号 [] 包围的标题来标识,键和值之间通常使用等号 = 分隔。

        以下是一个典型的INI文件示例:

[Settings]
Language=zh-CN
Theme=Dark[User]
Username=example
Password=example123

        在这个例子中,SettingsUser 是两个不同的节。LanguageThemeSettings节中的键,而UsernamePasswordUser节中的键。

使用场景:

  • 配置文件:许多软件应用程序使用INI文件作为用户设置或程序配置的存储方式。
  • 轻量级存储:对于需要轻量级数据存储的小型项目,INI文件是一个简单的选择。
  • 兼容性:尽管JSON、XML等格式更加现代化且功能强大,但INI文件在一些传统应用场合依然保持着较高的兼容性。

操作方法:

        在Windows系统中,可以使用API函数如GetPrivateProfileStringWritePrivateProfileString来读取和写入INI文件,这些函数提供了直接操作INI文件的能力,无需自己解析文本格式。这些API函数处理Unicode和ANSI字符集,确保了与国际化应用的兼容。

二、GetPrivateProfileString和WritePrivateProfileString

        在 Windows 中,您可以使用 Windows API 函数来读取和写入 INI 文件。常用的函数包括 GetPrivateProfileString(读取)和 WritePrivateProfileString(写入)。下面是一个完整的示例,展示如何使用这些 API 函数来读取和修改 INI 文件:

[Settings]
Language=zh-CN
Theme=Dark

[User]
Username=example
Password=example123

#include <iostream>
#include <windows.h>
#include <string>// 读取 INI 文件中的字符串
std::string ReadIniString(const std::string& file, const std::string& section, const std::string& key, const std::string& defaultValue) {char buffer[256];GetPrivateProfileStringA(section.c_str(), key.c_str(), defaultValue.c_str(), buffer, sizeof(buffer), file.c_str());return std::string(buffer);
}// 将字符串写入 INI 文件
bool WriteIniString(const std::string& file, const std::string& section, const std::string& key, const std::string& value) {return WritePrivateProfileStringA(section.c_str(), key.c_str(), value.c_str(), file.c_str()) != 0;
}int main() {// 设置要读取和写入的 INI 文件路径std::string iniFilePath = "C:\\Path\\To\\Your\\Config.ini";// 示例:读取配置std::string language = ReadIniString(iniFilePath, "Settings", "Language", "en-US");std::string theme = ReadIniString(iniFilePath, "Settings", "Theme", "Light");std::cout << "Language: " << language << std::endl;std::cout << "Theme: " << theme << std::endl;// 示例:修改配置bool isWriteSuccessful = WriteIniString(iniFilePath, "Settings", "Language", "zh-CN");if (isWriteSuccessful) {std::cout << "Successfully changed the language to zh-CN." << std::endl;} else {std::cerr << "Failed to write to the INI file." << std::endl;}return 0;
}

解释:

  1. 读取 INI 文件中的字符串

    • GetPrivateProfileStringA 函数用于读取指定节和键的值。我们提供默认值,以防找不到该键。
    • 缓冲区大小可根据预期的最大数据长度进行调整。
  2. 将字符串写入 INI 文件

    • WritePrivateProfileStringA 函数用于写入指定的节和键的值。
    • 返回 0 表示写入失败。

http://www.lryc.cn/news/349750.html

相关文章:

  • 物联网D3——按键控制LED、光敏传感蜂鸣器
  • Spring初学入门(跟学笔记)
  • 二进制部署k8s---下篇
  • 基于Sentinel-1遥感数据的水体提取
  • C++自定义头文件使用(函数和类)
  • 消息队列选型
  • ubuntu在conda环境中使用 pip install -r requirements.txt但是没有安装在虚拟环境中
  • 力扣127.单词接龙讲解
  • latex笔记
  • 秋招算法——AcWing101——拦截导弹
  • IDEA不能创建新项目和新模块
  • WebRTC 的核心:RTCPeerConnection
  • LeetCode hot100-39-N
  • NumPy常用操作
  • 学习笔记——字符串(单模+多模+练习题)
  • DOT + graphviz 轻松画图
  • 使用Vue调用ColaAI Plus大模型,实现聊天(简陋版)
  • Unity使用sherpa-onnx实现离线语音合成
  • Elasticsearch入门基础和集群部署
  • 12、24年--信息系统治理——IT治理
  • Electron学习笔记(三)
  • 【Redis】Redis键值存储
  • C++系统编程篇——Linux初识(系统安装、权限管理,权限设置)
  • No Cortex-M SW Device Found
  • 提升写作效率的秘密武器:一个资深编辑的AI写作体验
  • Python sort() 和 sorted() 的区别应用实例详解
  • 七、Redis三种高级数据结构-HyperLogLog
  • 2024年【金属非金属矿山(露天矿山)安全管理人员】模拟考试题库及金属非金属矿山(露天矿山)安全管理人员作业模拟考试
  • 网站DDoS攻击应对策略:全面防护与恢复指南
  • 线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法