ini文件就是简单的section 下面有对应的键值对
std::map<std::string, std::map<std::string, std::string>>MyIni::readIniFile() {std::ifstream file(filename);if (!file.is_open()) {std::cerr << "Error: Unable to open file " << filename << std::endl;return iniData;}std::string line;std::string currentSection;while (std::getline(file, line)) {// 移除行首和行尾的空格和制表符line.erase(line.find_last_not_of(" \t") + 1);line.erase(0, line.find_first_not_of(" \t"));//cout << "line:" << line << endl;if (line.empty() || line[0] == ';' || line[0] == '#') {// 空行或注释行,忽略continue;}else if (line[0] == '[' && line[line.length() - 1] == ']') {// 新的节(section)currentSection = line.substr(1, line.length() - 2);//cout << "Section" << currentSection.c_str() << endl; }else {// 键值对std::size_t equalsPos = line.find('=');if (equalsPos != std::string::npos) {std::string key = line.substr(0, equalsPos);std::string value = line.substr(equalsPos + 1);iniData[currentSection][key] = value;}}}file.close();return iniData;
}int MyIni::FillReaderInfo(std::string section) {std::map<std::string, std::map<std::string, std::string>>::iterator it;std::map<std::string, std::string>::iterator it1;std::map<std::string, std::string> ma;it = iniData.find(section);if (it == iniData.end()){cout << "not find section " << section << endl;return -1;}else {cout << "find section " << section << endl;for (it1 = it->second.begin(); it1 != it->second.end(); it1++){ma[it1->first] = it1->second;}}#if 0for (it1 = ma.begin(); it1 != ma.end(); it1++){cout << it1->first << "=" << it1->second << endl;}
#endifit1 = ma.find("chLineNumber");if (it1 == ma.end()){cout << "not find chLineNumber" << endl;return -1;}
}
//注意此例子文件打开格式要为LF
}
可以用noteped++打开修改,windows下面的需要稍微进行处理,去除末尾的\r \n两个字符