现在的位置: 首页 > 编程语言 > 正文

文本查询 没写完代码

2019年08月08日 编程语言 ⁄ 共 1150字 ⁄ 字号 评论关闭

//文本查询

// 要做的事情 1、把一个文本 的每一行 放入 vector 中。

//  2、记录每一个单词的行号

//  3、根据行号输出每行单词。

 

class TextQuery

{

public:

typedef vector<string>::size_type line_no;

 

void store_file( ifstream& is);

 

set<line_no> print_lineno(string& )const;

 

string print_linestring(line_no)const ;

 

private:

 

vector<string>line_of_text;

 

map<string , set<line_no> >word_map;

};

 

void TextQuery::store_file(ifstream& is)

{

string word;

while ( getline( is,word ) )

{

line_of_text.push_back(word);

}

 

line_no num;

for( num=0; num != line_of_text.size(); ++num )

{

string line, tempword;

istringstream istream(line_of_text[num]);

while ( istream>> word)

{

word_map[word].insert(num);

}

}

 

}

 

 

set<line_no> TextQuery::print_lineno(string& str)

{

map<string, set<line_no> >::iterator iter = word_map.find(str);

if (iter == word_map.end())

{

return set<line_no>();

}

return iter->second;

}

 

string TextQuery::print_linestring(line_no num)

{

if ( num< line_of_text.size())

{

return line_of_text[num];

}

}

 

void print_result(const set<TextQuery::line_no>& los, const string& str, const TextQuery & textclass)

{

cout<<"str:"<<str<<"total num:"<<los.size()<<endl;

set<TextQuery::line_no>::iterator iter=los.begin();

for (; iter != los.end();++iter)

{

cout<< *iter+1 <<textclass.print_linestring(*iter)<<endl;

}

}

 

void main( void )

{

}

【上篇】
【下篇】

抱歉!评论已关闭.