QT读取ini文件的一个坑

后缀名为.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"的字符串数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值