我有一个std::map<char*,std::map<char*, char*>> ini;
我读入一个ini文件的文件。
ini 文件的格式为:
[SECTIONAME]
key=value
[SECTIONNAME2]
key2=value2
所以基本上是这样 map<sectionName, map<key, value>>
。
我很好地将值插入到地图中,似乎:
std::cout << "inserting at section: '" << currentSection.c_str() << "', tag: '" << tag.c_str() << "', value: '" << value.c_str() << "'" << std::endl;
ini.find(const_cast<char *>(currentSection.c_str()))->second.insert(std::make_pair(const_cast<char *>(tag.c_str()), const_cast<char *>(value.c_str())));
std::cout << "inserted key: '" << ini.find(const_cast<char *>(currentSection.c_str()))->second.find(const_cast<char *>(tag.c_str()))->first << "'" << std::endl;
std::cout << "inserted value: '" << ini.find(const_cast<char *>(currentSection.c_str()))->second.find(const_cast<char *>(tag.c_str()))->second << "'" << std::endl;
似乎一切顺利:
inserting at section: 'SCENARIO', tag: 'id', value: '1'
inserted key: 'id'
inserted value: '1'
inserting at section: 'SCENARIO', tag: 'base', value: '1'
inserted key: 'base'
inserted value: '1'
我迭代并打印出值:
std::map<char*, std::map<char*, char*>>::iterator iter;
for(iter = ini.begin(); iter != ini.end(); iter++)
{
std::map<char*, char*> innermap = iter->second;
std::map<char*, char*>::iterator iterinner;
std::cout << "found section: '" << iter->first << "'" << std::endl;
for(iterinner = innermap.begin(); iterinner != innermap.end(); iterinner++)
{
std::cout << "key: '" << iterinner->first << "', value: '" << iterinner->second << "'" << std::endl;
}
}
在我遍历它并打印出来之后,我得到了这个:
found section: 'á♦╧'
key: '', value: ''
key: 'Φ↑╧', value: ''
为什么我在迭代中得到垃圾?谢谢你的帮助!