0

我有以下代码--->

配置文件.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 文件的其他方式。

4

2 回答 2

2

如何按照此处的建议使用 Windows API 或 Boost Program Options在 C++ 中解析 INI 文件的最简单方法是什么?

于 2013-03-10T17:08:00.297 回答
2

您正在尝试为const字符串分配新值,即更改其值。你不能改变一个const对象,它是const.

使它成为非常量。

于 2013-03-10T17:08:04.593 回答