Я должен прочитать dictionary.txt
и test.txt
. Затем необходимо проверить каждое слово в test.txt
, если оно равно, тогда это слово будет добавлено в контейнер KnownWords
, а оставшееся будет в UnknownWords
контейнере. Я сделал все до сих пор. Но в функции DisplayKnownWordStats()
мне также нужно отобразить положение слов. Я попробовал следующий код, но он не дает мне правильное значение позиций.
Может кто-нибудь помочь мне, чтобы получить правильную позицию KnownWords
с test.txt
.
void WordStats::ReadTxtFile()
{
std::ifstream ifile(Filename);
if (!ifile)
{
std::cerr << "Error Opening file " << Filename << std::endl;
exit(1);
}
for (std::string word; ifile >> word; )
{
transform(word.begin(), word.end(), word.begin(), ::tolower);
WordMap & Words = (Dictionary.count(word) ? KnownWords : UnknownWords);
Words[word].push_back(ifile.tellg());
}
std::cout << KnownWords.size() << " known words read." << std::endl;
std::cout << UnknownWords.size() << " unknown words read." << std::endl;
}
// Displays stats of words in KnownWords
void WordStats::DisplayKnownWordStats()
{
cout << " ";
cout << " Word Count Position(s)\n";
for (Paragraph = KnownWords.begin(); Paragraph != KnownWords.end(); ++Paragraph)
{
string word = (*Paragraph).first;
vector<int> vect = (*Paragraph).second;
int cnt = vect.size();
cout << setw(15) << word << setw(10) << cnt << " ";
for (int i = 0; i<cnt; i++)
cout << vect[i] << ' '; // something wrong with this code
cout << endl;
}
}