统计文本中单词出现次数,打印出现次数最多的前10个.文本大小30KB~300KB
一。编译环境
1). 操作系统:Windows8.1
2). IDE: VS2012
3). 语言: C++,MFC框架
另外....简单的用Skin#美化了一下界面皮肤
二。基本思想
使用文件流读取文件,去掉标点,空格用以分隔单词,每读取一个单词就存入map的key和value,若存在则将相应的key对应的value值(即该单词出现次数)加1。(注明:这里利用map操作时insert时相同的key不会被覆盖,但是利用下标访问表达式,map[key] =value;这样的调用是会被重写相应key的值的。这样做可以省去很多代码)
三。重要部分代码
注释已经算很详细了吧,由于MFC框架的关系,就只贴出关键部分代码。
这里利用复选框来选择需不需要排除"am","is","are","i","you","he","she","and"...由于这些词太多,我也就选一些特别容易出现的作为代表。文件的选择利用文件对话框自行选择。
以下为“检测”按钮点击事件:
void CStringCatcherDlg::OnBnClickedScan()
{
//获得复选框的选中状态
CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK); //获取复选框指针
int state = pBtn->GetCheck(); //取得选中状态