【发布时间】:2018-10-18 03:54:13
【问题描述】:
我必须逐字阅读"testdata.txt" 中的单词,并在另一个文件"dictionary.txt" 中查找相同的单词。我已经实现了在ReadDictionary() 函数中读取"dictionary.txt" 的代码。但是我必须实现ReadTextFile()公共成员函数才能将名为:“testdata.txt”的文件读入私有成员“KnownWords”和“UnknownWords”数据中。 “KnownWords”中只应放入“已知”单词,其余单词应放入“UnknownWords”中。
我必须使用地图和配对,但我不知道如何在我的编程中使用它。有人可以帮我弄清楚这个以获得这个输出吗:
89 known words read.
49 unknown words read.
int main():
WordStats ws;
ws.ReadTxtFile();
头文件:
using namespace std;
typedef map<string, vector<int> > WordMap;
typedef WordMap::iterator WordMapIter;
class WordStats
{
public:
WordStats();
void ReadDictionary();
void DisplayDictionary();
void ReadTxtFile();
private:
WordMap KnownWords;
WordMap UnknownWords;
set<string> Dictionary;
char Filename[256];
};
这是我的程序:
WordStats::WordStats(){
strcpy(Filename,"testdata.txt");
}
// Reads dictionary.txt into Dictionary
void WordStats::ReadDictionary(){
string word;
ifstream infile("dictionary.txt");
if(!infile)
{
cerr << "Error Opening file 'dictionary.txt. " <<endl;
exit(1);
}
while(getline(infile,word))
{
transform (word.begin(), word.end(), word.begin(), ::tolower);
Dictionary.insert(word);
}
infile.close();
cout << endl;
cout << Dictionary.size() << " words read from dictionary. \n" <<endl;
}
// Reads textfile into KnownWords and UnknownWords
void WordStats::ReadTxtFile(){
string words;
vector<string> findword;
vector<int> count;
ifstream ifile(Filename);
if(!ifile)
{
cerr << "Error Opening file 'dictionary.txt. " <<endl;
exit(1);
}
while(!ifile.eof())
{
getline(ifile,words);
//KnownWords.insert( pair<string,int>( KnownWords, words ) );
findword.push_back(words);
Paragraph = KnownWords.find(words);
//stuck here
}
}
【问题讨论】:
-
您将哪些
std::vector<int>值与您的已知和未知单词相关联? -
根据要求,我们必须使用vector
来push_back我们在字典中找到单词的位置
标签: c++ class dictionary stl keyvaluepair