#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <map>
using namespace std;
int main()
{
ifstream fin;
fin.open("myTextFile.txt");
if ( fin.fail()){
cout << "Could not open input file.";
exit(1);
}
string next;
map <string, int> words;
while (fin >> next){
words[next]++;
}
cout << "\n\n" << "Number of words: " << words[next] << endl;
fin.close();
fin.open("myTextFile.txt");
while (fin >> next){
cout << next << ": " << words[next] << endl;
}
fin.close();
return 0;
}
我的主要问题是,当一个词出现不止一次时,它也会被列出不止一次。即,如果文本以“hello hello”开头,则 cout 产生:“hello: 2”'\n'“hello:2”
另外,我不想关闭,然后第二次重新打开文件。似乎它仍然在最后一个 while 循环的文件末尾。