一 背景
1 ini文件介绍
.ini 文件是Initialization File的缩写,即初始化文件。
除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。
2 ini文件格式
INI文件由节、键、值组成。
节
[section]
参数(键=值)
name=value
下面是一个ini文件的例子
[Section1 Name]
KeyName1=value1
KeyName2=value2
...
[Section2 Name]
KeyName21=value21
KeyName22=value22
其中:[Section1 Name]用来表示一个段落。因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。
注解:使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。
二 Qt写ini文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <QtCore/QCoreApplication> #include <QSettings> int main( int argc, char *argv[]) { QCoreApplication a(argc, argv); //Qt中使用QSettings类读写ini文件 //QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省 QSettings *configIniWrite = new QSettings( "hahaya.ini" , QSettings::IniFormat); //向ini文件中写入内容,setValue函数的两个参数是键值对 //向ini文件的第一个节写入内容,ip节下的第一个参数 configIniWrite->setValue( "/ip/first" , "192.168.0.1" ); //向ini文件的第一个节写入内容,ip节下的第二个参数 configIniWrite->setValue( "ip/second" , "127.0.0.1" ); //向ini文件的第二个节写入内容,port节下的第一个参数 configIniWrite->setValue( "port/open" , "2222" ); //写入完成后删除指针 delete configIniWrite; return a.exec(); } |
运行程序后,打开程序目录下的hahaya.ini文件,结果如下图所示:
三 Qt读ini文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <QtCore/QCoreApplication> #include <QSettings> #include <QString> #include <QDebug> int main( int argc, char *argv[]) { QCoreApplication a(argc, argv); QSettings *configIniRead = new QSettings( "hahaya.ini" , QSettings::IniFormat); //将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型 QString ipResult = configIniRead->value( "/ip/second" ).toString(); QString portResult = configIniRead->value( "/port/open" ).toString(); //打印得到的结果 qDebug() << ipResult; qDebug() << portResult; //读入入完成后删除指针 delete configIniRead; return a.exec(); } |
程序运行截图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理