1.用空格和標點符號(如逗號和句號)作為分隔符將文章分成單個單詞。
2.將每個單詞轉換成小寫。
3.統計單詞數,記錄每個單詞出現在地圖上的次數。
4.對地圖中的記錄進行排序並輸出。
示例代碼:
# include & ltiostream & gt
# include & ltfstream & gt
# include & lt字符串& gt
# include & lt地圖& gt
# include & ltvector & gt
# include & lt算法& gt
使用命名空間std
int main()
{
ifstream infile(" English . txt ");//打開文件
字符串字;
地圖& ltstring,int & gt頻率圖;//存儲單詞及其頻率。
while(infile & gt;& gtWord) //循環讀取單詞。
{
if (word[word.size() - 1] == ' . '|| word[word.size() - 1] == ',' || word[word.size() - 1] == '?'|| word[word.size() - 1] == '!')//刪除標點符號
{
word = word.substr(0,word . size()-1);
}
transform(word.begin()、word.end()、word.begin()、::to lower);//轉換成小寫字母
frequency map[word]++;//統計詞頻
}
向量& ltpair & ltstring,int & gt& gtfrequency vec(frequency map . begin()、frequency map . end());//將地圖轉換為矢量
sort(frequencyVec.begin(),frequencyVec.end(),[](const pair & lt;string,int & gt& ampp1,常量對& ltstring,int & gt& ampp2) {return p1.second!= p2 .秒?p 1 . second & gt;p2 . second:p 1 . first & lt;p2.first});//按詞頻從高到低排序
對於(const auto & ampP: frequencyVec) //遍歷向量,輸出每個單詞及其詞頻。
{
cout & lt& ltp.first & lt& lt" " " & lt& ltp.second & lt& ltendl
}
返回0;
}