多图的多图不插入数据

时间:2018-06-02 11:04:14

标签: c++ string file multimap

我正在尝试读取文件并将值放在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

为什么不打印所有版本字符串?

0 个答案:

没有答案