gpt4 book ai didi

c++ - 如何将 std::string 分配给我类(class)中的其他 std::string(overload = for string object)。如何加载 .ini 文件

转载 作者:行者123 更新时间:2023-11-27 23:17:51 24 4
gpt4 key购买 nike

我有以下代码--->

配置文件.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

PortNumclass ConfigFile 的成员,上面的代码给我一个编译错误,如 error C2678: binary '=' : no operator这是因为我的类(class)中没有“=”重载运算符……所以我如何为我的类(class)重载“=”运算符……或者有什么方法可以在另一个中复制/分配字符串值。 ..

上面的代码是用来读取一个 .ini 文件的,如果配置 Port 存在,那么我将处理 PortNum 中的值..

在我的问题中添加我更喜欢加载 .ini 文件的其他方式。

最佳答案

您正在尝试为 const 字符串分配一个新值,即更改其值。您无法更改 const 对象,它是 const

使其成为非常量。

关于c++ - 如何将 std::string 分配给我类(class)中的其他 std::string(overload = for string object)。如何加载 .ini 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15324945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com