Getting input from text file and storing into array but text file contains more than 20.000 strings

Getting inputs from a text file and storing it into an array but text file contains more than 20.000 strings. I'm trying to read strings from the text file and store them into a huge-sized array. How can I do that?

I can not use vectors. Is it possible to do it without using a hash table?

Afterward, I will try to find the most frequently used words using sorting.


Solution 1:

You do not need to keep the whole file in memory to count frequency of words. You only need to keep a single entry and some data structure to count the frequencies, for example a std::unordered_map<std::string,unsigned>.

Not tested:

std::unordered_map<std::string,unsigned> processFileEntries(std::ifstream& file) { 
    std::unordered_map<std::string,unsigned> freq;
    std::string word;
    
    while ( file >> entry ) {
              ++freqs[entry];
    }
    return freq;
}

For more efficient reading or more elaborated processing you could also read chunks of the file (eg 100 words), process chunks, and then continue with the next chunk.