C++统计字符频数_英文字符

之前有一个需求:统计一个混合中英文字符和各种符号的文件的各字符数量,结果发现,事情并没有想象的那么简单.于是先写个只统计英文字符的程序吧.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//data.txt需要放在相同目录下
//只能计算纯英文文件中的字符.
#include <iostream>
#include <map>
#include <fstream>
#include <algorithm>
#include <string>
#include <ctime>
#include <iomanip>

using namespace std;

int main(){
ifstream infile("data.txt");
string s1;
char c;
map<char,int> m1;
multimap<double,char> m2;
int sumchar=0;

clock_t start,end;

start=clock();
while(infile.get(c)){
m1[c]++;
sumchar++;
}

std::map<char,int>::iterator it1=m1.begin();
for(;it1 != m1.end(); it1++){
m2.insert(pair<double,char>((it1->second*1.0/sumchar),it1->first));
}

end=clock();

cout<<"共计:"<<(end-start)/1000<<"毫秒"<<endl;
//cout<<(end-start)/CLOCKS_PER_SEC<<"秒"<<endl;
cout<<"总计:"<<sumchar<<"个字符"<<endl<<endl;


std::multimap<double,char>::iterator it2=m2.begin();
for(;it2 != m2.end();it2++){
cout<<it2->second<<" "
<<setw(4)<<it2->first*100<<"%"
<<endl;
}
}

知识点

欢迎与我分享你的看法。
转载请注明出处:http://taowusheng.cn/