我有以下代码--->
配置文件.h
#ifndef __CONFIG_FILE_H__
#define __CONFIG_FILE_H__
#include <string>
#include <map>
const std::string SECTION1 = "SERVER";
class ConfigFile {
private:
const std::string PortNum;
public:
ConfigFile(std::string const& configFile);
std::string GetPortNO()
{
return PortNum;
}
void Load_Server_Config();
//std::string& operator= (const std::string& str);
};
#endif
配置文件.cpp
#include "ConfigFile.h"
#include <fstream>
std::string trim(std::string const& source, char const* delims = " \t\r\n") {
std::string result(source);
std::string::size_type index = result.find_last_not_of(delims);
if(index != std::string::npos)
result.erase(++index);
index = result.find_first_not_of(delims);
if(index != std::string::npos)
result.erase(0, index);
else
result.erase();
return result;
}
ConfigFile::ConfigFile(std::string const& configFile) {
std::ifstream file(configFile.c_str());
std::string temp;
std::string line;
std::string name;
std::string value;
std::string inSection;
int posEqual;
while (std::getline(file,line)) {
if (! line.length()) continue;
if (line[0] == '#') continue;
if (line[0] == ';') continue;
if (line[0] == '[') {
inSection=trim(line.substr(1,line.find(']')-1));
continue;
}
posEqual=line.find('=');
name = trim(line.substr(0,posEqual));
value = trim(line.substr(posEqual+1));
if (name.compare("Port") == 0)
{
PortNum = value;
}
}
}
int main()
{
ConfigFile cf("test.ini");
return 0;
}
.ini 文件..
[SERVER]
Port = 1234
其中PortNum是类 ConfigFile的成员上面的代码给了我一个编译错误,错误 C2678: binary '=' : no operator its due to there is no "="重载运算符不在我的类中......所以我怎么能重载我的班级的“=”运算符.....或者有没有办法在另一个中复制/分配字符串值......
上面的代码被写入读取一个 .ini 文件,如果存在配置端口,那么我将处理PortNum中的值。
添加到我的问题中,我更喜欢加载 .ini 文件的其他方式。