#QT模式
.h实现
#includeclass QtReadIni { public: //读取 virtual void ReadConstruction(); //保存 virtual void SaveConstruction(); };
CPP实现
#include "QtReadIni.h" #include#include void QtReadIni::ReadConstruction() { QSettings* IniFile = new QSettings(QString("Config.ini"), QSettings::IniFormat); if (IniFile) { QString GroupName = "System/ip"; //判断该ini文件中是否有该节点 bool Key = IniFile->contains(GroupName); if (Key == true) { QString USETimeCtrl = IniFile->value(GroupName).toString(); } GroupName = "System/pwd"; bool Key2 = IniFile->contains(GroupName); if (Key == true) { int USETimeCtrl = IniFile->value(GroupName).toInt(); } GroupName = "ThirdPart/age"; bool Key3 = IniFile->contains(GroupName); if (Key == true) { int USETimeCtrl = IniFile->value(GroupName).toInt(); } delete IniFile; } } void QtReadIni::SaveConstruction() { QSettings* IniFile = new QSettings( QString("Config.ini"), QSettings::IniFormat); QString GroupName = "System"; IniFile->beginGroup(GroupName); IniFile->setValue(QString("ip"), QString("127.0.0.1")); IniFile->setValue(QString("pwd"), ("123456")); IniFile->endGroup(); GroupName = "ThirdPart"; IniFile->beginGroup(GroupName); IniFile->setValue(QString("age"), 22); IniFile->endGroup(); delete IniFile; }
调用
QtReadIni IniR; IniR.SaveConstruction(); IniR.Updateini(); return 0;
结果
头文件
#pragma once #include#include #include #include #include class BoostReadIni { public: void ReadIni(); //暂时未查到如何判断如何检查ini文件是否具备该节点 template int GetValue(boost::property_tree::ptree& m_root_node,std::string key, T& value) { try { value = m_root_node.get (key); } catch (std::exception e) { std::cerr << e.what() << std::endl; return false; } return true; } bool UpdateItem(); void SaveFile(); private: };
CPP实现
#include "BoostReadIni.h"
void BoostReadIni::ReadIni()
{
std::string _FileName = "Config.ini";
//判断是否具备该文件
if (boost::filesystem::exists(_FileName))
{
boost::property_tree::ptree m_root_node;
boost::property_tree::ini_parser::read_ini(_FileName, m_root_node);
std::string strIP;
if (GetValue(m_root_node,"System.ip", strIP))
{
std::cout << strIP << std::endl;
}
std::string strIPVE;
if (GetValue(m_root_node, "System.VE", strIPVE))
{
std::cout << strIP << std::endl;
}
else
{
std::cout << "获取改值失败" << std::endl;
}
int iAge;
if (GetValue(m_root_node, "ThirdPart.age", iAge))
{
std::cout << iAge << std::endl;
}
}
}
bool BoostReadIni::UpdateItem()
{
std::string _FileName = "Config.ini";
if (boost::filesystem::exists(_FileName))
{
boost::property_tree::ptree m_root_node;
boost::property_tree::ini_parser::read_ini(_FileName, m_root_node);
m_root_node.put(std::string("System.ip"), std::string("192"));
boost::property_tree::ini_parser::write_ini(_FileName, m_root_node);
return true;
}
return false;
}
void BoostReadIni::SaveFile()
{
std::string _FileName = "Config.ini";
boost::property_tree::ptree m_root_node;
if (boost::filesystem::exists(_FileName))
{
boost::property_tree::ini_parser::read_ini(_FileName, m_root_node);
}
m_root_node.put(std::string("System.ip"), std::string("192.236"));
m_root_node.put(std::string("System.pwd"), std::string("192"));
m_root_node.put(std::string("ThirdPart.age"), 23);
boost::property_tree::ini_parser::write_ini(_FileName, m_root_node);
}
调用
BoostReadIni config; config.SaveFile(); config.UpdateItem(); config.ReadIni();



