64,281
社区成员
发帖
与我相关
我的任务
分享
//---------------------------------------------------------------------------
#include <iostream>
#include <fstream>
#include <string>
#include <map>
using namespace std;
int main(int argc, char* argv[])
{
fstream fin;
fin.open("1.txt", fstream::in);
multimap <string,string> ms;
multimap <string,string>::iterator it;
string str, value;
size_t pos;
if(!fin.is_open())
return -1;
while(getline(fin, str))
{
string::size_type p = str.find_first_of('\t');
string key = str.substr(0, p);
str.erase(0, p+1);
while( (pos = str.find_first_of('\t')) != string::npos)
{
value = str.substr(0, pos);
ms.insert(pair<string,string>(key, value));
str.erase(0, pos+1);
}
ms.insert(pair<string,string>(key, str));
}
for ( it=ms.begin() ; it != ms.end(); it++ )
cout << (*it).first << " => " << (*it).second << endl;
cin.get();
return 0;
}
///////////////////////////////////////////////
/* 1.txt的文件内容:
键值1 s1 s2
键值2 s1 s2 s3
键值3 s1 s2
键值4 s1 s2 s3
键值5 s1 s2
键值6 s1 s2 s3
键值7 s1
键值8 s1 s2 s3 s4
*/
////////////////////////////////////////////////
////////////////////////////////////////////////
/*运行结果:
键值1 => s1
键值1 => s2
键值2 => s1
键值2 => s2
键值2 => s3
键值3 => s1
键值3 => s2
键值4 => s1
键值4 => s2
键值4 => s3
键值5 => s1
键值5 => s2
键值6 => s1
键值6 => s2
键值6 => s3
键值7 => s1
键值8 => s1
键值8 => s2
键值8 => s3
键值8 => s4
*/
///////////////////////////////////////////////////////
//---------------------------------------------------------------------------
//举个例子:
int main()
{
ifstream in("test1.txt");
string str;
if(!in)
return 1;
while(getline(in, str)){
string::size_type p = str.find('\t');
string key = str.substr(0, p);
str.erase(0, p);
string::size_type pos = str.find_first_not_of('\t');
string value = str.substr(pos);
cout << key << " :" << value << endl; //怎么处理,就看你了
}
}