INI文件格式介绍:
INI文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中。
INI文件是Initialization File的缩写,即初始化文件。
除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。
一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。
INI文件被用来对操作系统或特定程序初始化或进行参数设置。
文件格式
节(section)
节用方括号括起来,单独占一行,
例如:
[section]
键(key)
键(key)又名属性(property),单独占一行用等号连接键名和键值,例如:
name=value
QT读写INI文件
添加头文件:
#include<QSettings.h>
#include<qDebug.h>
Qt4.0一个非常有用的类QSettings,在windows平台,它提供了ini文件读写,注册表读写的功能。而且使用也非常简单。
QSettings::Format有两种:
QSettings::NativeFormat在windows平台可以读写windows注册表;
QSettings::IniFormat可以读写ini格式的配置文件。
例:
[General]
name=aaa
ip="192.168.1.10"
auto_con=1
speed=50
joints=0.000,-13.959,2.2,83.3,0.000,18.000,-30.000
tcp_offset= 133.4,0.0,0.0,0.0,0.0,-10.0
默认 section 为 General
QSettings setting("config.ini",QSettings::IniFormat);
QString name =setting.value("name").toString();
int speed =setting.value("speed").toInt();
qDebug() << name;
qDebug() << speed;
输出:
"aaa"
50
读取中间有 逗号或空格key
joints=0.000,-13.959,2.2,83.3,0.000,18.000,-30.000
setting.setIniCodec("utf-8");// 解决乱码
QStringList list = setting.value("joints").toStringList();
qDebug() << list;
输出:("0.000", "-13.959", "2.2", "83.3", "0.000", "18.000", "-30.000")
读 tcp_offset= "133.4,0.0,0.0,0.0,0.0,-10.0" 字符串,为逗号做分隔
QStringList tcp_offset = setting.value("tcp_offset").toString().split(",");
qDebug() << tcp_offset;
输出:("133.4", "0.0", "0.0", "0.0", "0.0", "-10.0")
tcp_offset= "133.4,0.0,0.0,0.0,0.0,-10.0"
使用非默认 section
[conn]
name=aaa
ip="192.168.1.10"
auto_con=1
speed=50
joints=0.000,-13.959,2.2,83.3,0.000,18.000,-30.000
tcp_offset= 133.4,0.0,0.0,0.0,0.0,-10.0
QSettings setting("config.ini",QSettings::IniFormat);
setting.setIniCodec("utf-8");// 解决乱码
QString name =setting.value("conn/name").toString();
int speed =setting.value("conn/speed").toInt();
qDebug() << name;
qDebug() << speed;
输出:
"aaa"
50
写ini 文件:
//Qt中使用QSettings类读写ini文件
//QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
QSettings *configIniWrite = new QSettings("config.ini", QSettings::IniFormat);
//向ini文件中写入内容,setValue函数的两个参数是键值对
//向ini文件的第一个节写入内容,ip节下的第一个参数
configIniWrite->setValue("/con/ip", "192.168.0.1");
//向ini文件的第一个节写入内容,ip节下的第二个参数
configIniWrite->setValue("/con/name", "aa");
//向ini文件的第二个节写入内容,port节下的第一个参数
configIniWrite->setValue("port/open", "2222");
configIniWrite->setValue("port/ports", "2222,111,33,444");
//写入完成后删除指针
delete configIniWrite;
生成文件 config.ini
[con]
ip=192.168.0.1
name=aa
[port]
open=2222
ports="2222,111,33,444"