Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何编辑while循环一次读取单词并从文件中递增单词_C++ - Fatal编程技术网

C++ 如何编辑while循环一次读取单词并从文件中递增单词

C++ 如何编辑while循环一次读取单词并从文件中递增单词,c++,C++,我正在visual studio 2010 win 32控制台中编写代码。简而言之,函数应该从文件中读取,然后使用循环读取文件中的每个单词,如果遇到已经看到的单词,则增加相同的单词 我尝试使用while循环来循环文件,但它只显示所有单词,不增加相同的单词 list<TokenCount> buildUnigram_Model(char* fromfile) { list<TokenCount> FT; ifstream inF; inF.open(

我正在visual studio 2010 win 32控制台中编写代码。简而言之,函数应该从文件中读取,然后使用循环读取文件中的每个单词,如果遇到已经看到的单词,则增加相同的单词

我尝试使用while循环来循环文件,但它只显示所有单词,不增加相同的单词

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?