C++ 如何编辑while循环一次读取单词并从文件中递增单词
我正在visual studio 2010 win 32控制台中编写代码。简而言之,函数应该从文件中读取,然后使用循环读取文件中的每个单词,如果遇到已经看到的单词,则增加相同的单词 我尝试使用while循环来循环文件,但它只显示所有单词,不增加相同的单词C++ 如何编辑while循环一次读取单词并从文件中递增单词,c++,C++,我正在visual studio 2010 win 32控制台中编写代码。简而言之,函数应该从文件中读取,然后使用循环读取文件中的每个单词,如果遇到已经看到的单词,则增加相同的单词 我尝试使用while循环来循环文件,但它只显示所有单词,不增加相同的单词 list<TokenCount> buildUnigram_Model(char* fromfile) { list<TokenCount> FT; ifstream inF; inF.open(
list<TokenCount> buildUnigram_Model(char* fromfile)
{
list<TokenCount> FT;
ifstream inF;
inF.open(fromfile,ios::in);
string word;
int frequency=0;
while(inF>>word)
{
TokenCount C;
initTokenCount(C,word,frequency);
FT.push_back(C);
}
inF.close();
return FT;
}
预期结果显示在标准输出上显示为单词,每个单词出现的次数,例如,如果文件有hi五次,则在标准输出上应为hi 5,将计数存储在std::map中
std::map<std::string, std::size_t> count;
while(inF>>word) ++count[word];
这可能是因为显示的代码中似乎没有任何内容递增或计数。所示代码的哪一部分希望增加给定单词的计数?显示的代码中似乎没有打印任何东西的计数。这并没有解决这个问题,但要养成将对象初始化为它们将拥有的值的习惯,而不是默认构造它们然后修改它们。即改变ifstream-inF;inF.openfromfile,ios::in;到ifstream inFfromfile;。因为它是一个ifstream,所以它进行输入;你不需要告诉它。您不需要调用inF.close;。析构函数会这么做的。-山姆·瓦沙维奇我不知道如何增加单词的数量,否则我有代码来显示它。如果是一个增加单词的想法,它会有很大的帮助sir@PeteBecker我理解,但如果我被要求增加文件中的单词,如果两个单词相同,则增加std::map中的计数。什么是TokenCount或initTokenCount?