我有一个x = 5的字符串,我把它拼接到x 5然后声明一个地图
map<string, double> variableMap;
我将它们放入地图使用
variableMap.insert(make_pair(splitString.at(0), stod(splitString.at(1))));
splitString.at(0)
将为x,stod(splitString.at(1))
将为5
但是当我试图通过使用
从find键获取值时 map<string, double>::iterator iter;
iter = variableMap.find("x");
cout << iter->second<<endl;
它打印6.95321e-310
这真的很奇怪
答案 0 :(得分:1)
您可能错误地使用splitString,因此地图实际上并不包含键“x”。在使用之前,你应该使用variableMap.end()检查find的结果是否相等。
iter = variableMap.find("x");
if(iter == variableMap.end()) {
// not found ...
}
使用debuger,并验证该对具有正确的内容,包括字符串的空格。
您也可以打印它以检查它包含的内容:
for(auto elem : variableMap) {
std::cout << ">"<<elem.first << "< " << elem.second << std::endl;
}
编辑:因为您的问题确实是空格,请考虑不要自己编写字符串字符串操作,而是查看C++ - Split string by regex
处的最佳答案