Пытаюсь подсчитать количество слов повторений в тексте выдается лабуда со словом «материале» хотя оно встречается лишь однажды вот исходный текст https://dropmefiles.com/n8Xok и обработанный https://dropmefiles.com/m3lYM и сам код:
#include <iostream>
#include <fstream>
#include <vector>
bool f(char c)
{
if (c == ' ' || c == ',' || c == '.' || c == '?'
|| c == ':' || c == ';' || c == '<'
|| c == '>' || c == '!' || c == '-' || c=='\n' ||
c == '1' || c == '2' || c == '3' || c == '4'
|| c == '5' || c == '6' || c == '7'
|| c == '8' || c == '9' || c == '0')
return true;
else
return false;
}
int main()
{
std::vector<std::pair<int, std::string>> v;
std::pair<int, std::string> p;
setlocale(LC_ALL, "en_US.UTF-8");
char buff[255]; // буфер промежуточного хранения считываемого из файла текста
std::ifstream fin("text.txt"); // (ВВЕЛИ НЕ КОРРЕКТНОЕ ИМЯ ФАЙЛА)
std::ofstream fout("word.txt"); // создаём объект класса ofstream для записи и связываем его с файлом cppstudio.txt
if (!fin.is_open()) // если файл не открыт
std::cout << "Файл не может быть открыт!\n"; // сообщить об этом
else
{
//fin >> buff; // считали первое слово из файла
//std::cout << buff << std::endl; // напечатали это слово
std::string str;
while (fin.getline(buff, 255))
{
for (int i = 0; i < 255; i++)
{
if(f(buff[i]))
{
p.first = 0;
p.second = str;
std::cout << str << std::endl;
fout <<str<<'\n'; // запись строки в файл
v.push_back(p);
str.clear();
}
else
str += buff[i];
}
} // считали строку из файла
fin.close(); // закрываем файл
//std::cout << buff << std::endl; // напечатали эту строку
}
fout.close();
return 0;
}