为什么它从地图

时间:2015-11-18 22:54:32

标签: c++

我有一个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

这真的很奇怪

1 个答案:

答案 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

处的最佳答案