64,642
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
#include <cassert>
using std::cin;
using std::cout;
using std::istringstream;
using std::string;
using std::vector;
using std::for_each;
class Part
{
public:
string id;
string seq;
vector<string> remainder;
};
int main()
{
vector<Part *> parts;
string line;
while (getline(cin, line))
{
istringstream isstrm(line);
string token;
while (isstrm >> token)
{
if ("@part" == token)
{
parts.push_back(new Part);
break;
}
if ("@id" == token)
{
Part *last = parts.back();
assert(NULL != last);
isstrm >> last->id;
break;
}
if ("@seq" == token)
{
Part *last = parts.back();
assert(NULL != last);
isstrm >> last->seq;
break;
}
if ("@l" == token)
{
Part *last = parts.back();
assert(NULL != last);
while (isstrm >> token)
{
last->remainder.push_back(token);
}
break;
}
}
}
vector<Part *>::iterator parts_end = parts.end();
for (vector<Part *>::iterator it = parts.begin(); it != parts_end; ++it)
{
cout << (*it)->id << '\n';
cout << (*it)->seq << '\n';
for (vector<string>::iterator itl = (*it)->remainder.begin(); itl != (*it)->remainder.end(); ++itl)
{
cout << *itl << ' ';
}
cout << '\n';
}
for (vector<Part *>::iterator it = parts.begin(); it != parts_end; ++it)
{
delete *it;
}
return 0;
}