首页 > 其他 > 详细

Qt读取ini文件进行配置

时间:2021-04-01 22:42:57      阅读:31      评论:0      收藏:0      [点我收藏+]

Qt读取ini文件进行配置:

ini文件

.ini 文件是Initialization File的缩写,即初始化文件。
格式:
ini配置文件由节、键、值组成。
【节】
所有的参数都是以节(section)为单位结合在一起的。所有的section名称都是独占一行,并且section名字都被方括号包围着([和])。在section声明后的所有parameters都属于该section。一个section没有明显的结束标识符,一个section的开始就是上一个section的结束,或者是文件结束。
例如:

[addr]

【参数】
(键=值)
如:

ip=127.0.0.1
port=9527

【注解】
注解使用(;)表示,在分号后面的文字,直到该行结尾都全部为注释。

;addr配置ipv4地址和端口

整体如下:

[addr]
ip=192.168.1.1
port=5768
cvltime=10
user=plote
[system]
system-v=win10
cpu=4

QT读写ini文件内容:

使用QSetting类读写ini文件

//头文件 
#include <QSettings>
#include <QString>
#include <QDebug>
QSettings *settings;//申明一个QSetting类函数
settings = new QSettings ("config.ini", QSettings::IniFormat);//构建函数
//参数:参数一为配置文件,一般位于项目文件下,参数二表示针对ini文件格式

写入文件

//向目标文件中的config节的参数ip写入数据192.167.1.1 ini中为ip=192.187.1.1
settings->setValue("/system/user","admin");
settings->setValue("/system/pass","123");
settings->setValue("/system/ipaddress","192.167.1.1");

打开文件效果如下:

技术分享图片

读取文件:

首先可以定义一个保存信息的结构体:

struct system_infomation{
    char *user;//用户
    char *pass;//密码
    char *ipaddress;//上位机网络地址
    int port;//上位机端口
    float cnum;
    };

这里常用的数据类似两种,一种是int型,一种是Qstring类型。

//先声明结构体
system_infomation sys;
sys.port=settings->value("/system/port").toInt();
sys.cnum=settings->value("/system/cnum").toFloat();//前面定义的什么类型,后面就转换为什么类型
QString pass=settings->value("/system/pass").toString();

如果是字符串,使用toString将数据转化为QString,注意这里的类型是Qstring,不能char * paw=pass;

sys.pass=settings->value("/system/pass").toString();是错误的,会报错,因为结构体中pass 的定义是char *

如果要将ini中的信息读取保存到char * 类型的结构体中,则涉及到一个类型的转换。

//char *型赋值
    QString pass=settings->value("/system/pass").toString();
    //sys.pass定义为char*
    QByteArray pa=pass.toLatin1();//将Qstring类转换为char *
    sys.pass=pa.data();

使用QbyteArray进行转化就可以将信息读取出来了。

还有一种将Qstring转化为char *的方法:
注意此方法要求char * 的定义为 const char *

//Qstring与char * 转化方法2 但是要求char*定义为 const char *
	QString pass=settings->value("/system/pass").toString();
    std::string str=pass.toStdString();
    sys.pass=str.c_str();

这里的sys.pass定义为const char *

在读写完后删除指针

delete settings;

输出

使用qDebug()输出

	qDebug() <<"user:"<<sys.pass;
    qDebug() <<"user:"<<sys.user;
    qDebug() <<"addr:"<<sys.ipaddress;
    qDebug() <<"port"<<sys.port;

运行效果如下:
技术分享图片

Qt读取ini文件进行配置

原文:https://www.cnblogs.com/raoxuln/p/14607304.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!