C++读写配置文件"*.ini
2018-03-30 23:32
465 查看
前两天遇到了一个读写“ini”配置文件的问题,上网搜了一下,发现网上资料很全,这里只是自己对这个问题的一个总结学习,仅供参考!ReadWriteINI.h:#ifndef WRITEREADINI_H
#define WRITEREADINI_H
#include <QtWidgets/QMainWindow>
#include "ui_Writereadini.h"
class WriteReadINI : public QMainWindow
{
Q_OBJECT
public:
WriteReadINI(QWidget *parent = 0);
~WriteReadINI();
void WriteINI();
void ReadINI();
QStringList list;
private:
Ui::WriteReadINIClass ui;
};
#endif // WRITEREADINI_H
ReadWriteINI.cpp:#include "Writereadini.h"
#include <QSettings>
#include <QVariant>
#include <QDebug>
#include <QTableWidget>
QStringList list;
WriteReadINI::WriteReadINI(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
WriteINI();
ReadINI();
writeToTable();
}
WriteReadINI::~WriteReadINI()
{
}
void WriteReadINI::WriteINI()
{
QSettings settings("config.ini", QSettings::IniFormat); // 当前目录的INI文件
settings.beginGroup("a");
settings.setValue("a1",14.2);
settings.setValue("a2",14.3);
settings.setValue("a3",14.4);
settings.endGroup();
settings.beginGroup("b");
settings.setValue("b1",2.0);
settings.setValue("b2",2.1);
settings.setValue("b3",2.2);
settings.endGroup();
}
void WriteReadINI::ReadINI()
{
QVariant strConfigValue;
QString strConfigGroup;
QString strConfigKey;
QString strfile = "config.ini"; // 文件地址
QSettings user_cfg(strfile,QSettings::IniFormat);
user_cfg.setIniCodec("GBK"); // 设置读的编码格式
// 读配置文件
//"a"组
strConfigGroup = "a";
user_cfg.beginGroup(strConfigGroup);
// a 组第一个数据
strConfigKey = "a1"; // 键
strConfigValue = user_cfg.value(strConfigKey); // 读
qDebug() << "---------------------------------------a1 = "<<strConfigValue; // 在控制台输出一下结果
list << strConfigValue.toString(); // 将结果存入一个QStringList
// a 组第二个数据
strConfigKey = "a2";
strConfigValue = user_cfg.value(strConfigKey);
qDebug() << "---------------------------------------a2 = "<<strConfigValue;
list << strConfigValue.toString(); // a 组第三个数据
strConfigKey = "a3";
strConfigValue = user_cfg.value(strConfigKey);
qDebug() << "---------------------------------------a3 = "<<strConfigValue;
list << strConfigValue.toString();
user_cfg.endGroup(); // 结束本组的读
strConfigGroup = tr("b");
user_cfg.beginGroup(strConfigGroup);
strConfigKey = "b1";
strConfigValue = user_cfg.value(strConfigKey);
qDebug() << "---------------------------------------b1 = "<<strConfigValue;
strConfigKey = "b2";
strConfigValue = user_cfg.value(strConfigKey);
qDebug() << "---------------------------------------b2 = "<<strConfigValue;
strConfigKey = "b3";
strConfigValue = user_cfg.value(strConfigKey);
qDebug() << "---------------------------------------b3 = "<<strConfigValue;
user_cfg.endGroup();
}
config.ini
[a]a1=14.2
a2=14.3
a3=14.4
[b]
b1=2.0
b2=2.1
b3=2.2
以上是简单的读写过程。 在读配置文件的时候还出现了读出空串的情况,纠结了好大一会,最终看到一篇文章上说到:读的值中有分号的时候读不出来,他给出的处理办法是为配置文件的值加上双引号。回头看我的配置文件,发现没有读出数据的都是有”,“的数据,然后用双引号给这个数据括了起来,解决! 总结:个人以为配置文件中的字符串可以用双引号括起来,以防出现特殊字符,在不了解的情况下读出空串。
#define WRITEREADINI_H
#include <QtWidgets/QMainWindow>
#include "ui_Writereadini.h"
class WriteReadINI : public QMainWindow
{
Q_OBJECT
public:
WriteReadINI(QWidget *parent = 0);
~WriteReadINI();
void WriteINI();
void ReadINI();
QStringList list;
private:
Ui::WriteReadINIClass ui;
};
#endif // WRITEREADINI_H
ReadWriteINI.cpp:#include "Writereadini.h"
#include <QSettings>
#include <QVariant>
#include <QDebug>
#include <QTableWidget>
QStringList list;
WriteReadINI::WriteReadINI(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
WriteINI();
ReadINI();
writeToTable();
}
WriteReadINI::~WriteReadINI()
{
}
void WriteReadINI::WriteINI()
{
QSettings settings("config.ini", QSettings::IniFormat); // 当前目录的INI文件
settings.beginGroup("a");
settings.setValue("a1",14.2);
settings.setValue("a2",14.3);
settings.setValue("a3",14.4);
settings.endGroup();
settings.beginGroup("b");
settings.setValue("b1",2.0);
settings.setValue("b2",2.1);
settings.setValue("b3",2.2);
settings.endGroup();
}
void WriteReadINI::ReadINI()
{
QVariant strConfigValue;
QString strConfigGroup;
QString strConfigKey;
QString strfile = "config.ini"; // 文件地址
QSettings user_cfg(strfile,QSettings::IniFormat);
user_cfg.setIniCodec("GBK"); // 设置读的编码格式
// 读配置文件
//"a"组
strConfigGroup = "a";
user_cfg.beginGroup(strConfigGroup);
// a 组第一个数据
strConfigKey = "a1"; // 键
strConfigValue = user_cfg.value(strConfigKey); // 读
qDebug() << "---------------------------------------a1 = "<<strConfigValue; // 在控制台输出一下结果
list << strConfigValue.toString(); // 将结果存入一个QStringList
// a 组第二个数据
strConfigKey = "a2";
strConfigValue = user_cfg.value(strConfigKey);
qDebug() << "---------------------------------------a2 = "<<strConfigValue;
list << strConfigValue.toString(); // a 组第三个数据
strConfigKey = "a3";
strConfigValue = user_cfg.value(strConfigKey);
qDebug() << "---------------------------------------a3 = "<<strConfigValue;
list << strConfigValue.toString();
user_cfg.endGroup(); // 结束本组的读
strConfigGroup = tr("b");
user_cfg.beginGroup(strConfigGroup);
strConfigKey = "b1";
strConfigValue = user_cfg.value(strConfigKey);
qDebug() << "---------------------------------------b1 = "<<strConfigValue;
strConfigKey = "b2";
strConfigValue = user_cfg.value(strConfigKey);
qDebug() << "---------------------------------------b2 = "<<strConfigValue;
strConfigKey = "b3";
strConfigValue = user_cfg.value(strConfigKey);
qDebug() << "---------------------------------------b3 = "<<strConfigValue;
user_cfg.endGroup();
}
config.ini
[a]a1=14.2
a2=14.3
a3=14.4
[b]
b1=2.0
b2=2.1
b3=2.2
以上是简单的读写过程。 在读配置文件的时候还出现了读出空串的情况,纠结了好大一会,最终看到一篇文章上说到:读的值中有分号的时候读不出来,他给出的处理办法是为配置文件的值加上双引号。回头看我的配置文件,发现没有读出数据的都是有”,“的数据,然后用双引号给这个数据括了起来,解决! 总结:个人以为配置文件中的字符串可以用双引号括起来,以防出现特殊字符,在不了解的情况下读出空串。
相关文章推荐
- C++读写ini配置文件GetPrivateProfileString()&WritePrivateProfileString()
- C++读写ini配置文件GetPrivateProfileString()&WritePrivateProfileString()
- C++读写ini配置文件
- C++读写ini配置文件
- C++读写ini配置文件
- C++读写ini配置文件
- C++针对ini配置文件读写大全
- C++针对ini配置文件读写大全
- C++针对ini配置文件读写大全
- C/C++ 关于如何读写ini配置文件
- C++读写INI配置文件
- C++读写ini配置文件
- C++中通过MFC对ini初始化,配置文件的读写使用
- 【C++】读写ini配置文件
- C++读写ini配置文件
- 【转载】C++读写ini配置文件GetPrivateProfileString()&WritePrivateProfileString()
- 用于读写 INI 配置文件的 C++ 类
- C++对ini配置文件与xml配置文件的读写
- C++[类设计] ini配置文件读写类config
- C++读写INI配置文件的类实例