后缀名为.ini的文件是一种常用的配置文件格式,用于存储和读取应用程序的配置信息。Qt提供了方便的API来读写.ini文件,使得配置信息的管理变得简单快捷。
Qt中读写.ini文件主要是使用 QSettins 类。
假设有个me.ini文件如下:
[Server]
IP=127.0.0.1
Port=10000
读.ini文件的例子如下所示:
#include <QSettings>
#include <QString>
#include <QString>
QString iniFilePath = "/home/pi/me.ini";
QSettings iniFile(iniFilePath, QSettings::IniFormat);
iniFile.setIniCodec(QTextCodec::codecForName("UTF-8"));
iniFile.beginGroup("Server");
QString ip = iniFile.value("IP", "").toString();
int port = iniFile.value("Port", 0).toInt();
iniFile.endGroup();
写.ini文件的例子如下所示:
#include <QSettings>
#include <QString>
#include <QString>
QString iniFilePath = "/home/pi/me.ini";
QSettings iniFile(iniFilePath, QSettings::IniFormat);
iniFile.setIniCodec(QTextCodec::codecForName("UTF-8"));
iniFile.beginGroup("Server");
iniFile.setValue("IP", "127.0.0.1");
iniFile.setValue("Port", 10000);
iniFile.endGroup();
但是,写.ini文件有一个坑,一般可能碰不上。这个坑就是,如果value的值是以英文逗号(,)隔开的字符串,如果使用toString(),则获取不到数据,必须使用toStringList(),例子如下:
假设有以下内容的.ini文件:
[Server]
ChNum=1,2,3
使用以下代码:
#include <QSettings>
#include <QString>
#include <QString>
QString iniFilePath = "/home/pi/me.ini";
QSettings iniFile(iniFilePath, QSettings::IniFormat);
iniFile.setIniCodec(QTextCodec::codecForName("UTF-8"));
iniFile.beginGroup("Server");
QString chNumStr = iniFile.value("ChNum", "").toString(); //该方法获取不到字符串
QStringList chNumStrList = iniFile.value("ChNum").toStringList(); //该方法可以获取到字符串数组
iniFile.endGroup();
以上代码中,得到的 chNumStr 是空字符串,得到的 chNumStrList 是包含3个字符串"1"、"2"、"3"的字符串数组。