config.h
#ifndef CONFIGFILE_H
#define CONFIGFILE_H
#include <string.h>
#include <map>
using namespace std;
class ConfigFile
{
public:
ConfigFile();
void readConfigFile(string fileName);
void writeConfigFile(string fileName);
void setKeyValue(const string &key, const string &vale);
void clear();
map<string, string> m_userLogin;
private:
void splitWithStl(const std::string &str, const std::string pattern, string &str1, string &str2);
};
#endif // CONFIGFILE_H
config.cpp
#include "configfile.h"
#include <iostream>
#include <fstream>
ConfigFile::ConfigFile()
{
}
void ConfigFile::readConfigFile(string fileName)
{
ifstream file(fileName);
string str;
while (std::getline(file, str))
{
string str1,str2;
splitWithStl(str,"=",str1,str2);
if(str1!=""&&str2!="")
{
m_userLogin.insert(pair<string,string>(str1,str2));
cout<<str1<<":"<<str2<<endl;
}
}
file.close();
}
void ConfigFile::writeConfigFile(string fileName)
{
ofstream ofs;
ofs.open(fileName,ios::trunc); //ios::trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建
map<string,string>::iterator iter;//定义一个迭代指针iter
for(iter=m_userLogin.begin(); iter!=m_userLogin.end(); iter++)
{
cout<<iter->first <<":"<<iter->second<<endl;
if(iter->first!=""&&iter->second!="")
{
ofs<<iter->first <<"="<<iter->second<<endl;
}
}
ofs.flush();
ofs.close();//关闭文件
}
void ConfigFile::setKeyValue(const string &key, const string &vale)
{
m_userLogin.erase(key);
if (key != "" && vale != "")
{
m_userLogin.insert(pair<string, string>(key, vale));
}
}
void ConfigFile::clear()
{
m_userLogin.clear();
}
void ConfigFile::splitWithStl(const string &str, const string pattern, string &str1, string &str2)
{
std::string strs = str + pattern;
size_t pos = strs.find(pattern);
size_t size = strs.size();
bool bStop=false;
while (pos != std::string::npos)
{
if(!bStop)
{
str1=strs.substr(0,pos);
bStop=true;
}else
{
str2=strs.substr(0,pos);
return;
}
strs = strs.substr(pos+1,size);
pos = strs.find(pattern);
}
}
main.cpp
ConfigFile configFile;
configFile.readConfigFile("/etc/user.sign/logger.ini");
configFile.setKeyValue(keyId, userName);
configFile.writeConfigFile("/etc/user.sign/logger.ini");
map<string, string>::iterator iter;
for (iter = configFile.m_userLogin.begin(); iter != configFile.m_userLogin.end(); iter++)
{
}