у меня есть задание для класса, чтобы написать код, который будет подсчитывать количество появлений конкретного слова в .txt
файл случае нечувствительнойCount число появлений конкретного слова в C++ текстового файла
int main(){
char U[50];
string a;
int number=0;
cout<<"name of file"<<endl;
cin.getline(U,50);
ifstream text(U,ios_base::binary);
if(!text){
cout<<"nonexisting"<<endl;
return 0;
}
cin>>a;
transform(a.begin(), a.end(), a.begin(), ::tolower);
string word;
while(text>>word){
transform(word.begin(), word.end(), word.begin(), ::tolower);
if(!a.compare(word))number++;
}
cout<<number;
text.close();
return 0;
}
проблема заключается программа состоит из 32 слов в файле, но есть 40 из них
вот мое решение проблемы
int main(){
char U[50];
string a;
int number=0;
cout<<"name of file"<<endl;
cin.getline(U,50);
ifstream text(U);
if(!text){
cout<<"nonexisting"<<endl;
return 0;
}
cin>>a;
transform(a.begin(), a.end(), a.begin(), ::tolower);
string word;
while(text>>word){
transform(word.begin(), word.end(), word.begin(), ::tolower);
if (word.find(a) != string::npos)number++;
}
cout<<number;
text.close();
Для начала, если вы хотите что-то посчитать, вероятно, вы должны использовать ['std :: count' или' std :: count_if'] (http://en.cppreference.com/w/cpp/algorithm/ рассчитывать). Чтобы продолжить, я предлагаю прочитать все слова в ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector) (что может быть сделано за один проход, без цикла для тебя). Можете не решить вашу проблему, но сделает код более простым. –
Что касается вашей проблемы, почему вы открываете * текстовый файл * в * двоичном режиме *? Это может быть возможной проблемой. –
Возможный дубликат [C++, подсчет повторяющихся слов в строке и отображении] (http://stackoverflow.com/questions/11833882/c-count-repeated-words-in-the-string-and-display) – Priya