zoukankan      html  css  js  c++  java
  • 一个利用map统计一段英文文章中每个单词出现次数的小程序

    #include <fstream>
    #include <string>
    #include <map>
    using namespace std;

    int main()
    {
        map<string, int> m;
        ifstream ifs("calculate.txt");
        if(!ifs)
            return -1;
       
        string str("abcdefghigklmnopqrstuvwxyz");
        int i = 0;
        while(!ifs.eof())
        {
            char c,b;

           // 此处不可以使用输入流ifs>>c,因为输入流不读如空格。
            c = ifs.get();
            b = tolower(c);   
            if('a' <= b && b<= 'z')
            {
                str[i] = b;
                i++;
            }
            else
            {   
                string tmp;
                tmp = str.substr(0,i);
                ++m[tmp];
                i = 0;
            }   
        }
       
        string str1;
        while(cin>>str1)
        {
            cout<<str1<<"在文章中出现的次数是:";
            cout<<m[str1]<<endl;
        }
        return 0;
    };

    上述程序的map采用下标存取,若某单词不在文章中的时候,会自动添加一个键是该单词的元素,并把其值初始化为0.

    克服此缺点采用如下程序:

    #include <fstream>
    #include <string>
    #include <map>
    using namespace std;

    int main()
    {
        map<string, int> m;
        ifstream ifs("calculate.txt");
        if(!ifs)
            return -1;
       
        string str("abcdefghigklmnopqrstuvwxyz");
        int i = 0;
        while(!ifs.eof())
        {
            char c,b;
            c = ifs.get();  // 此处不可以使用输入流ifs>>c,因为输入流不读如空格。
            b = tolower(c);   
            if('a' <= b && b<= 'z')
            {
                str[i] = b;
                i++;
            }
            else
            {   
                string tmp;
                tmp = str.substr(0,i);
                if(!m.count(tmp))
                    m.insert(make_pair(tmp,1));
                else
                    m[tmp]++;
                i = 0;
            }   
        }
       
        string str1;
        while(cin>>str1)
        {
            if(m.count(str1) == 0)
                cout<<str1<<"在文章中出现的次数是0."<<endl;
            else
                cout<<str1<<"在文章中出现的次数是"<<m[str1]<<endl;
        }
        return 0;
    };

    2009/2/11 by hekex1n@126.com

  • 相关阅读:
    CDE 快捷键
    shell 快捷键
    Monitor 问题
    vim 编辑快捷键
    MySQL 的include lib文件夹找不到怎么
    深入分析C++引用
    vim 查找匹配字符串次数
    如何配置Vim背景色以及字体?
    vim中字体和配色方案设置
    C#设置richtextbox滚动到最后一行
  • 原文地址:https://www.cnblogs.com/kex1n/p/2286591.html
Copyright © 2011-2022 走看看