【发布时间】:2013-02-06 16:48:19
【问题描述】:
我将我从正则表达式匹配中获得的结果存储在 unordered_map 中。 std::cout sub 匹配 m[1].str() 并且 m[2].str() 正确显示了键值对。
虽然当我将它们存储在 unordered_map 中时,我总是收到一个异常报告,报告找不到密钥。这是代码:
boost::unordered::unordered_map<std::string, std::string>
loadConfigFile(std::string pathToConfFile) throw(std::string){
std::fstream fs;
fs.open(pathToConfFile.c_str());
if(!fs)
throw std::string("Cannot read config file.");
boost::unordered::unordered_map<std::string, std::string> variables;
while(!fs.eof())
{
std::string line;
std::getline(fs, line);
//std::cout << line << std::endl;
boost::regex e("^(.+)\\s*=\\s*(.+)");
boost::smatch m; //This creates a boost::match_results
if(boost::regex_match(line, m, e)){
std::cout << m[1].str() << " " << m[2].str() << std::endl;
variables[m[1].str()] = m[2].str();
}
}
std::cout << variables.at(std::string("DEPOT_PATH")) << std::endl; //Here I get the exception
return variables;
}
DEPOT_PATH 是配置文件中“变量”的名称。 std::cout
【问题讨论】:
标签: c++ boost boost-regex boost-unordered