ctextquery.cpp

来自「非常实用的查询工具」· C++ 代码 · 共 64 行

CPP
64
字号
# include "CTextQuery.h"

void TextQuery::store_file(std::ifstream& in)
{
	string content;
	while(getline(in,content))
		lines_of_text.push_back(content);
}

void TextQuery::build_map()
{
	string word;
	vector<string>::iterator it=lines_of_text.begin();
	line_no line=1;
	while(it!=lines_of_text.end())
	{
		istringstream strstream(*it);
		while(strstream>>word)
		{
			word_map[clean_up(word)].insert(line);
		}
		it++;
		line++;
	}
/*	while(line<lines_of_text.size())
	{
		istringstream strstream(lines_of_text[line]);
		while(strstream>>word)
		{
			word_map[word].insert(line);
		}
		++line;
	}
	cout<<"Debuging end"<<endl;*/
}

set<TextQuery::line_no> TextQuery::run_query(const std::string& str) const
{
	map<string,set<line_no> >::const_iterator it=word_map.find(str);
	if(it==word_map.end())
		return set<TextQuery::line_no>();
	else
		return it->second;
}

TextQuery::line_no TextQuery::size() const
{
	return lines_of_text.size();
}

string TextQuery::clean_up(string& word)
{
	string str;
	string::iterator it=word.begin();
	while(it!=word.end())
	{
		if(!ispunct(*it))
			str+=tolower(*it);
		it++;
	}
	return str;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?