Мне нужно прочитать текстовый файл, преобразовать его в нижний регистр и удалить не алфавитные символы, но также необходимо сохранить дефис и не считать его словом. вот моя кодировка Он считает дефис как слово в UnknownWords
. Я просто хочу сохранить дефис и просто хочу подсчитать слова, которые находятся слева и справа от дефиса в .txt
.
Мой вывод:
110 Known words read
79 Unknown words read //it is because it is counting hyphen as word
Желаемый вывод:
110 Known words read
78 Unknown words read
Код:
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);
word.erase(std::remove_if(word.begin(), word.end(), [](char c)
{
return (c < 'a' || c > 'z') && c != '\'' && c != '-';
}), word.end());
if (Dictionary.count(word))
{
KnownWords[word].push_back(ifile.tellg());
}
else
{
UnknownWords[word].push_back(ifile.tellg());
}
}
// std::string word; ifile >> word;
std::cout << KnownWords.size() << " known words read." << std::endl;
std::cout << UnknownWords.size() << " unknown words read." << std::endl;
}