编译环境:VC6.0
代码很简单 就不添加注释了 呵呵
#include <IOSTREAM>
#include <STRING>
#include <VECTOR>
#include <UTILITY>
#include <MAP>
#include <FSTREAM>
using namespace std;
int main(int argc,char **argv)
{
if(argc<2)
{
perror("WRONG PARAMETERS!\n");
return -1;
}
string file_name = argv[1];
fstream fp(file_name.c_str(),ios::in);
string line;
map<string,vector<int> > mymap;
int line_num = 0 ;
while(getline(fp,line))
{
line_num ++ ;
while(!line.empty())
{
string substr;
if(line.find(' ')==0)
{
line=line.substr(1);
continue;
}
if(line.find(' ')!=line.npos)
{
char str1[200];
memset(str1,0,200);
memcpy(str1,line.c_str(),line.find(' '));
line = line.substr(line.find(' '));
substr.assign(str1);
}else
{
substr = line;
line="";
}
if(mymap.find(substr) != mymap.end())
{
map<string,vector<int> >::iterator it = mymap.find(substr);
it->second.push_back(line_num);
continue;
}
else
{
mymap.insert(make_pair(substr,vector<int>(1,line_num)));
continue;
}
}
}
fp.close();
for(map<string,vector<int> >::iterator it1 = mymap.begin();it1 != mymap.end();it1++)
{
cout << it1->first<<"\t" <<ends;
vector<int> vec = it1->second;
for(vector<int>::iterator it2 = vec.begin();it2 != vec.end();it2++)
{
cout << *it2 <<ends;
}
cout <<endl;
}
return 0;
}