如何检查文本文件中每个单词的出现次数并显示C ++的次数

时间:2015-04-23 03:56:17

标签: c++

我有一个C ++问题。目前我有一个存储以下数据的文本文件。我希望做一个简单的程序,它将读取数据并打印出最频繁的项目显示和数量。

我不希望设置一个固定数量的单词数组来搜索文件,因为输入到文本文件中的项目未预先确定

以下是文本文件

中数据的结构

第四个值是数量,第二个值是项目名称

文字档案:

1|Bag|2|3|6|20Apr2015
2|Fruit|2.3|5|11.5|20Aug2015
4|Water|0.9|5|4.5|20Jun2015
5|File|0.9|5|4.5|20Jul2015
6|Water|0.9|5|4.5|20Nov2015
7|Water|0.9|5|4.5|20May2015
8|Bag|0.9|5|4.5|20Jan2015
9|Water|0.9|5|4.5|20Feb2015
10|Water|0.9|5|4.5|20Jan2015
11|Water|0.9|5|4.5|20Dec2015
12|File|0.9|5|4.5|20Oct2015
13|Water|0.9|5|4.5|20Sep2015
14|Water|0.9|5|4.5|20Sep2015

期望的输出:

最常见的项目是水,40个被出售

最不频繁的项目是水果,5个被出售

这是我目前的编码

    void computeItem()
    {


        string itemid;
        float totalprice;
        string item[4] ={"Water","Bag","Fruit","File"}; 
        int itemqty[4]={};

        int founditem;
        int foundyear;
        string year;
        string found;

        cout<<endl;


            for(int i = 0; i < MAX- 1; i++)
            {
                if(transactionpile[i].itemid !="")
                {
                    for(int k=0; k<4;k++)
                    {   

                            founditem = transactionpile[i].itemdesc.find(item[k]);
                            if(foundmonth<transactionpile[i].itemdesc.length())
                            {
                                //Add the totalprice of each found records to totalsalesmonth[k]
                                itemqty[k] += transactionpile[i].quantity;

                            }

                    }


                    }

                }


        }



        //Print out the output
        for(int i=0; i<4; i++)
        {

            cout << "            " << item[i] << "            " <<  << itemqty[i] <<endl;


        }

    }

1 个答案:

答案 0 :(得分:0)

也许,在循环浏览文件时,您可以动态增长std::vector个项目?因此,每次遇到某个项目时,请检查它是否已经在向量中,如果不是,则将其推送到最后。除此之外,只需将矢量视为您现在正在使用的数组(我假设......我真的无法告诉您现在正在做什么)。