I am writing a program that can count the number of times a word is found in a external file. The words that are to be searched for are also in an external file but I am able to retrieve those just fine. I realised that it will only update the value of count if the word exactly matches. So for example if I was searching for the word "School" and the word "school" was in the textfile I don't think the value of count would be changed. I also think that count wouldn't be changed if the word to be search for was "SCHOOL" and the word in the textfile was "school". So how do I edit my if statements so that for example the word "school" would match "SCHOOL" AND "School"?
This is my main function:
#include <iostream> #include "ReadWords.h" #include "Writer.h" #include <cctype> #include <string> using namespace std; int main() { int x = 9; int count = 0; int count0; int count1; int count2; int count3; int count4; int count5; int count6; int count7; int count8; int count9; int scount; const int size = 10; string word_search[size]; string word; cout << "Please enter a filename: " << flush; char filename[30]; cin >> filename; ReadWords reader(filename); while (reader.isNextWord()){ count = count + 1; reader.getNextWord(); } cout << "There are: " << count << " words in the play" << endl; cout << "Please enter the name of the file with the search words: " << flush; char filename1[30]; cin >> filename1; ReadWords reader1(filename1); scount = 0; while (reader1.isNextWord()) { word_search[scount] = reader1.getNextWord(); ++scount; } cout << "" << endl; while (reader.isNextWord()) { This is where I attempted to convert the input to upper case to see if the word matches the uppercase version of itself but this didn't work. Here I also need to check if the word matches itself if the first letter is capital?
if (reader.getNextWord() == word_search[0] || toupper(reader.getNextWord()) == word_search[0]) { count0 = count0 + 1; } if (reader.getNextWord() == word_search[1]) { count1 = count1 + 1; } if (reader.getNextWord() == word_search[2]) { count2 = count2 + 1; } if (reader.getNextWord() == word_search[3]) { count3 = count3 + 1; } if (reader.getNextWord() == word_search[4]) { count4 = count4 + 1; } if (reader.getNextWord() == word_search[5]) { count5 = count5 + 1; } if (reader.getNextWord() == word_search[6]) { count6 = count6 + 1; } if (reader.getNextWord() == word_search[7]) { count7 = count7 + 1; } if (reader.getNextWord() == word_search[8]) { count8 = count8 + 1; } if (reader.getNextWord() == word_search[9]) { count9 = count9 + 1; } } cout << "Please enter the name of the file to write to: " << flush; char filename2[30]; cin >> filename2; Writer reader2(filename2); cout << "File has been written too.." << endl; reader2.writeInt(count); reader2.writeString("Hello my name is Joshua Ogunnote"); return 0; } This is a separate file where some of my functions are declared:
#include "ReadWords.h" #include <cstring> #include <iostream> using namespace std; void ReadWords::close(){ wordfile.close(); } ReadWords::ReadWords(const char *filename) { wordfile.open(filename); if (!wordfile) { cout << "could not open " << filename << endl; exit(1); } } string ReadWords::getNextWord() { string n; if(isNextWord()){ wordfile >> n; int len = n.length(); for(int i = 0; i < len ; i++) { if (ispunct(n[i])) { n.erase(i--, 1); len = n.length(); } } cout << n << endl; return n; } } bool ReadWords::isNextWord() { if (wordfile.eof()) { return false; } return true; }