如何从INI文件读取配置文件条目
时间:2020-03-06 14:51:11 来源:igfitidea点击:
我无法使用Get * Profile
函数,因为我使用的是Windows CE平台SDK的旧版本,而没有这些功能。它不必太笼统。
[section] name = some string
我只需要打开文件,检查是否存在"节"以及与"名称"关联的值。首选标准C ++。
解决方案
我想出了什么:
std::wifstream file(L"\Windows\myini.ini"); if (file) { bool section=false; while (!file.eof()) { WCHAR _line[256]; file.getline(_line, ELEMENTS(_line)); std::wstringstream lineStm(_line); std::wstring &line=lineStm.str(); if (line.empty()) continue; switch (line[0]) { // new header case L'[': { std::wstring header; for (size_t i=1; i<line.length(); i++) { if (line[i]!=L']') header.push_back(line[i]); else break; } if (header==L"Section") section=true; else section=false; } break; // comments case ';': case ' ': case '#': break; // var=value default: { if (!section) continue; std::wstring name, dummy, value; lineStm >> name >> dummy; ws(lineStm); WCHAR _value[256]; lineStm.getline(_value, ELEMENTS(_value)); value=_value; } } } }
我们应该看看Boost.Program_options。
它具有一个parse_config_file函数,该函数可填充变量映射。正是我们所需要的!