C++ Primer 第5版--练习11.4

来源:互联网 发布:能赚集分宝的软件 编辑:程序博客网 时间:2024/05/29 13:27

练习 11.4:扩展你的程序,忽略大小写和标点。例如,"example."、"example,"和"Example"应该递增相同的计数器。

#include <iostream>#include <map>using namespace std;//将大写字符转变为小写字符string makelower(const string &s){    string temp(s);    for (int i = 0; i < s.size(); ++i)        temp[i] = tolower(s[i]);    return temp;}//去除标点符号string removePunct(const string &s){    string temp;    for(string::size_type i = 0; i < s.size(); ++i)        if (!ispunct(s[i]))            temp += s[i];    return temp;}int main(){    map<string, size_t> word_count;    string word, word_low, word_nopunct;    while (cin >> word)    {        word_nopunct = removePunct(word);        word_low = makelower(word_nopunct);        ++word_count[word_low];    }    for (const auto &w : word_count)    {        cout << "\"" << w.first << "\" occurs: " << w.second             << ((w.second > 1) ? " times" : " time") << endl;    }    return 0;}


0 0
原创粉丝点击