为什么它从地图中给出了随机值

why it gave random value from map

本文关键字:随机 地图 为什么      更新时间:2023-10-16

我有一个x=5的字符串,我将它拼接到x5,然后声明一个映射

 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

这真的很奇怪

您可能弄错了splitString,因此映射中并没有真正包含键"x"。在使用之前,您应该使用variableMap.end()检查find的结果是否相等。

iter = variableMap.find("x");
if(iter == variableMap.end()) {
  // not found ...
}

使用调试器,并验证该对是否具有正确的内容,包括字符串的空白。

你也可以打印它来检查它包含的内容:

for(auto elem : variableMap) {
   std::cout << ">"<<elem.first << "< " << elem.second << std::endl;
}

编辑:由于您的问题确实是空白,请考虑不要自己编写字符串操作,而是在C++中查看最重要的答案-通过regex 拆分字符串