#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”使用映射计算每个单词在文件中出现的次数。 (C++)
另外,我想不必关闭,然后重新打开文件第二次是真实的。它看起来仍然在最后while循环的文件末尾。
你的单词数量只会打印最后一个单词的数量。另外,遍历地图,不要再次读取文件(假设你改了名字,忘记改变另一个,根据你说的重新打开来判断)。 – chris 2013-03-18 15:22:39