一、INI 文件操作

1、概述

1、基本介绍

  • INI 文件是 Initialization File 的缩写,即初始化文件,通常存放的是一个程序的初始化信息,是 Windows 的系统配置文件所采用的存储格式,统管 windows 的各项配置

  • ini 文件的后缀名不一定是.ini ,也可以是.cfg 、.conf 或者是.tx* 。

  • INI 文件由多个节(section)组成,每个节都有多个键值对(key-value pair)。键值对:由一个键(key)和一个值(value)组成,中间使用等号(=)连接。

2、INI 文件的结构很简单,它通常由以下几个部分组成:

  • 节名称:以方括号 ([ ]) 括起来的字符串,用于标识一个节。
  • 键名称:一个字符串,用于标识一个键。
  • 键值:一个字符串,表示键对应的值。

3、在 INI 文件中,可以使用分号(;)或者井号(#)来添加注释,这些符号后面的内容将被解析器忽略,不被视为配置项或者值。

; This is a comment in INI file
# This is another comment

[Section1]
setting1 = value1 ; This is a comment for setting1
setting2 = value2 # This is another comment for setting2

在上面的示例中,“This is a comment in INI file”和“This is another comment”是两个注释,它们都不会被解析器读取。在 [Section1] 下面的 setting1 和 setting2 配置项后面也添加了注释,这些注释会被解析器忽略。

4、以下是一个简单的 INI 文件示例:

  • 这个 INI 文件包含两个节,一个是 database,另一个是 logging。
  • 在 database 节中,有 5 个键值对,分别是 host、port、username、password 和 database。
  • 在 logging 节中,有 2 个键值对,分别是 level 和 file。
[database]
host = localhost
port = 3306
username = myuser
password = mypass
database = mydb

[logging]
level = info
file = log.txt

INI 文件通常用于存储应用程序或操作系统的配置信息,例如数据库连接配置、日志记录配置等。由于 INI 文件的结构简单,易于阅读和编辑,因此被广泛应用。


2、Qt 如何读取 INI 文件

在 Qt 中,可以使用 QSettings 类来读取和写入 INI 文件。

以下是一个简单的示例代码,展示了如何读取 INI 文件中的值:

#include <QCoreApplication>
#include <QSettings>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSettings settings("config.ini", QSettings::IniFormat);

    QString value = settings.value("section1/key1", "default value").toString();
    qDebug() << "Value: " << value;

    return a.exec();
}
  • 在这个例子中,首先创建了一个 QSettings 对象,并指定了要读取的 INI 文件的路径和格式。
  • 然后通过 value 方法,读取 INI 文件中 section1 节点下的 key1 键的值。
  • 如果该键不存在,则返回默认值 “default value”。最后将读取到的值输出到控制台。

3、group 相关 API 介绍

QSettings 类中的 beginGroup、endGroup 和 group 函数用于处理设置中的分组信息,具体如下:

  • beginGroup(group: str) 函数:表示开始一个分组,它接受一个字符串类型的参数 group,表示分组的名字,分组的名称可以使用类似路径的方式来组织,例如:“UI/Font”。在一个分组内设置的键值对都会存储在这个分组内。
  • endGroup() 函数:表示结束当前的分组,一般在调用 beginGroup() 函数之后会调用此函数
  • group(group: str) 函数:表示返回一个 QSettings 对象,该对象是在指定的 group 下打开的,可以用它来读取或修改指定分组下的键值对信息。

通过使用 beginGroup() 和 endGroup() 函数,可以将键值对按照分组的方式来组织,便于管理和维护,同时也方便了程序的开发和维护。

以下是一个简单的使用例子:
假设有一个名为 “settings.ini” 的 INI 配置文件,内容如下:

[General]
username=John Doe
language=en_US

[Network]
port=8080

我们可以使用 QSettings 类来读取和写入 INI 文件中的值。下面是一个例子,演示了如何使用 beginGroup、endGroup 和 group 来读取和写入值:

#include <QtCore/QCoreApplication>
#include <QtCore/QSettings>
#include <QtCore/QString>
#include <QtCore/QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    // 读取 INI 文件中的值
    QSettings settings("settings.ini", QSettings::IniFormat);
    QString username = settings.value("General/username").toString();
    QString language = settings.value("General/language").toString();
    int port = settings.value("Network/port").toInt();

    // 打印读取到的值
    qDebug() << "username:" << username;
    qDebug() << "language:" << language;
    qDebug() << "port:" << port;

    // 写入 INI 文件中的值
    settings.beginGroup("General");
    settings.setValue("username", "Alice");
    settings.setValue("language", "zh_CN");
    settings.endGroup();

    settings.beginGroup("Network");
    settings.setValue("port", 80);
    settings.endGroup();

    // 读取已修改的值
    username = settings.value("General/username").toString();
    language = settings.value("General/language").toString();
    port = settings.value("Network/port").toInt();

    // 打印已修改的值
    qDebug() << "modified username:" << username;
    qDebug() << "modified language:" << language;
    qDebug() << "modified port:" << port;

    return app.exec();
}

在上面的例子中,我们使用 beginGroup 和 endGroup 来设置组,从而将值组织在一起。例如,我们在读取和写入 General 组的值时,使用 beginGroup(“General”) 和 endGroup() 来标识 General 组的起始和结束位置。这样可以让代码更加清晰易懂,也更加易于维护。

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐