文本查询 没写完代码

来源:互联网 发布:淘宝商城城 编辑:程序博客网 时间:2024/06/02 11:23

//文本查询

// 要做的事情 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;

 

stringprint_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 )

{

}