您的位置:首页 > 编程语言 > C语言/C++

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
    以上是简单的读写过程。    在读配置文件的时候还出现了读出空串的情况,纠结了好大一会,最终看到一篇文章上说到:读的值中有分号的时候读不出来,他给出的处理办法是为配置文件的值加上双引号。回头看我的配置文件,发现没有读出数据的都是有”,“的数据,然后用双引号给这个数据括了起来,解决!    总结:个人以为配置文件中的字符串可以用双引号括起来,以防出现特殊字符,在不了解的情况下读出空串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: