我正在尝试读取文件并将值放在multimap的多图中。 插入不会抛出任何错误,但是当我尝试打印值时,输出并不是预期的。
我的输入文件:
Server1,Database,MySQL,5.5
Server2,数据库,MySQL,5.1
Server2,OS,Ubuntu,12.04
Server3,语言,Python,2.6.3
我想存储这样的值:
的MySQL,5.5,服务器1
的MySQL,5.1,服务器2
我的代码:
#include<bits/stdc++.h>
using namespace std;
typedef multimap<string,string> innermap;
multimap<string,innermap> mp;
void print()
{
multimap<string, innermap >::iterator it;
multimap<string, string>::iterator inner_it;
for ( it=mp.begin() ; it != mp.end(); it++ )
{
cout<<(*it).first<<endl;
for( inner_it=(*it).second.begin(); inner_it != (*it).second.end(); inner_it++)
cout << (*inner_it).first<<" " << (*inner_it).second << endl;
}
}
int main()
{
string str_temp;
vector<string>str;
std::ifstream infile("abc.txt");
while ( getline (infile,str_temp) )
{
int i=0;
stringstream ss(str_temp);
char delim=',';
string server;
string software;
string version;
string item;
while (getline(ss,item,delim))
{
i++;
if(i==1)
server=item;
else if(i==3)
software=item;
else if(i==4)
version=item;
//else
// i++;
}
cout<<"server "<<server<<"software "<<software<<"version "<<version<<endl;
multimap<string, innermap >::iterator it;
it=mp.insert(make_pair(software,innermap()));
it->second.insert(make_pair(version,server));
//print();
}
print();
return 0;
}
我调试了我的代码,在插入之前从我的文件中正确读取了值。但是当我拨打print()
时,除了一个版本之外的所有版本都丢失了:
的MySQL
Server1的
MySQL的
Server2上
Python的
2.6.3 Server3
Ubuntu的
服务器2
为什么不打印所有版本字符串?