В интернете есть примеры, подобные этому. Вот программа подсчета слов, которую я написал, когда учился в средней школе. Используйте это как отправную точку. Другие вещи, на которые я хотел бы обратить внимание:
std :: stringstream: вы std :: getline всей строки, а затем используете std :: stringstream, чтобы разбить его на более мелкие части и разбить его на токены Вы можете получить всю строку, используя std :: getline, и ввести ее в std :: string, которую затем можете передать в std :: stringstream.
Еще раз, это всего лишь пример, и он не будет делать именно то, что вы хотите, вы должны будете изменить его сами, чтобы он делал то, что вы хотите!
#include <iostream>
#include <map>
#include <string>
#include <cmath>
#include <fstream>
// Global variables
std::map<std::string, int> wordcount;
unsigned int numcount;
void addEntry (std::string &entry) {
wordcount[entry]++;
numcount++;
return;
}
void returnCount () {
double percentage = numcount * 0.01;
percentage = floor(percentage + 0.5f);
std::map<std::string, int>::iterator Iter;
for (Iter = wordcount.begin(); Iter != wordcount.end(); ++Iter) {
if ((*Iter).second > percentage) {
std::cout << (*Iter).first << " used " << (*Iter).second << " times" << std::endl;
}
}
}
int main(int argc, char *argv[]) {
if (argc != 2) {
std::cerr << "Please call the program like follows: \n\t" << argv[0]
<< " <file name>" << std::endl;
return 1;
}
std::string data;
std::ifstream fileRead;
fileRead.open(argv[1]);
while (fileRead >> data) {
addEntry(data);
}
std::cout << "Total words in this file: " << numcount << std::endl;
std::cout << "Words that are 1% of the file: " << std::endl;
returnCount();
}