标签:
统计字符串中单词的数目,更复杂的话从一个文本中读出字符串并生成单词数目统计结果。对于一串字符串来说,如果需要对于其中的单词进行统计,就要首先搞清楚字符串的特点是什么,其中空格是作为分隔符的,如果可以使用正则表达式,那么只需要一层一层的分解。但是C++中没有正则表达式,就需要对于字符串进行一次次的判断一直到最后的结果,其实主要就是对于字符串中的制表符/t换行符/n忽略掉。一层一层的进行计算,最后得出最后的结果~~~
在这里遇到一个问题,就是C++中指针为null和""和什么也不做的区别~
string a;if(!a.empty())cout<<"string a";string b = "";if(!b.empty())cout<<"string ‘‘";if(a == b)cout<<"string ‘‘ a"<<endl;
#include <iostream>#include <map>#include <string>#include <fstream>using namespace std;int main(int argc, char const *argv[]){ifstream fin("wordtotol.txt", std::ios::in);char line[1024]={0};string str = "";while(fin.getline(line, sizeof(line)))str += line;fin.clear();fin.close();map<string,int> wordmap;map<string,int>::iterator mapiter;string unit;string::iterator rIt = str.begin();while (rIt != str.end()){if(*rIt>=‘A‘ && *rIt<=‘Z‘)*rIt += 32;if ( ‘a‘<=*rIt && *rIt<= ‘z‘ ){unit+=*rIt;rIt++;continue;}else{if ( (mapiter = wordmap.find(unit) )!= wordmap.end()){mapiter->second++;}else if(!unit.empty()){wordmap.insert(make_pair(unit,1));}rIt++;}unit.clear();}int n=0;for (mapiter = wordmap.begin(); mapiter != wordmap.end(); ++mapiter){cout<<mapiter->first<<" "<<mapiter->second<<endl;n+=mapiter->second;}cout<<"单词数目:"<<wordmap.size()<<endl<<"所有单词数目:"<<n<<endl;return 0;}
标签:
原文地址:http://www.cnblogs.com/clifff/p/5039581.html