//实现功能:输入文本后,把文本中每个字符串的位置打印出来。
#include <iostream>
#include <vector>
#include <utility>
using namespace std;
typedef pair<short,short> location;
typedef vector<location> loc;
typedef vector<string> text;
typedef pair<text*,loc*> text_loc;
text_loc* separate_words(const vector<string> *text_file)
{
vector<string> *words=new vector <string>;
vector<location> *locations=new vector<location>;
short line_pos=0;
for(;line_pos<text_file->size();++line_pos)
{
short word_pos=0;
string text_line=(*text_file)[line_pos];
string::size_type pos=0,prev_pos=0;
while((pos=text_line.find_first_of(' ',pos))!=string::npos)
{
words->push_back(text_line.substr(prev_pos,prev_pos-pos));
locations->push_back(make_pair(line_pos,word_pos));
++word_pos;
prev_pos=++pos;
}
words->push_back(text_line.substr(prev_pos,pos-prev_pos));
locations->push_back(make_pair(line_pos,word_pos));
}
return new text_loc(words,locations);
}
void printof(const text_loc *text_locations)
{
vector<string> *words=new vector <string>;
vector<location> *locations=new vector<location>;
vector<string>::iterator it=text_locations->first->begin(),
it_end=text_locations->first->end();
vector<location>::iterator loc_it=text_locations->second->begin();
string::size_type pos=0,prev_pos=0;
while(it!=it_end)
{
int _sizeof=(*it).size();
string it_str=(string)(*it);
string it_test=it_str;
short first_ =loc_it->first;
short sec_=loc_it->second;
if(it_str.length()!=0)
{
cout<<it_str<<" ("<<loc_it->first<<","<<loc_it->second<<")"<<endl;
}
//if((*it)[(*it).size()-1]!=' ')
//{
//
//}
++it;
++loc_it;
//if((*it)!=" ")//
//{
// words->push_back(it->substr())
//}
}
}
int main()
{
string test_fo;
vector<string> text_file;
while(cin>> test_fo)
{
text_file.push_back(' '+test_fo);
}
text_loc *text_locations=separate_words(&text_file);
printof(text_locations);
}
//
//
//string test_fo;
//string test_line[10];
//vector<test_line> text_file=new vector<string[]>;
//string name("AnnaBelle");
//int pos=name.find("Anna");
//
// if(pos==string::npos)
// {
// cout<<"Anna not found"<<endl;
//
// }
// else
// {
// cout<<"Anna found at pos:"<<pos<<endl;
// }
304

被折叠的 条评论
为什么被折叠?



