c++ 统计文本词频
来源:互联网 发布:淘宝盗版举报 编辑:程序博客网 时间:2024/05/01 14:18
#include <vector>#include <algorithm>#include <string>#include <fstream>#include <sstream>#include <iostream>using std::cout;using std::endl;using std::vector;using std::string;using std::ifstream;using std::ofstream;using std::istringstream;using std::sort;struct Record{ string word; int count;};class WordStatic{public: void readFile(const char *filename); void writeFile(const char *filename); static bool sortType(const Record &v1,const Record &v2) { return v1.count>v2.count;//逆序排列 } void begin_sort() { cout <<"共有"<<_words.size() <<"个不重复单词"<<endl; long l=0; for(int i=0;i<_words.size();++i) l+=_words[i].count; cout <<"单词个数为"<<l<<endl; sort(_words.begin(),_words.end(),sortType); }private: vector<Record> _words;};void WordStatic::readFile(const char *filename)//c++的string类无法作为open的参数{ ifstream ifs(filename);//打开文件流 if(!ifs.good())//打开不正常 { cout << "ifstream open file error" <<endl; return; } string line; int i;// WordStatic sta; while(getline(ifs,line))//一次读取一行 { istringstream iss(line);//获取一行 string word; while(iss>>word) //每次拿到一个单词 { for(i=0;i<_words.size();++i) { if(word == _words[i].word) { ++_words[i].count; break; } } if(i== _words.size()) { Record record; record.word = word; record.count = 1; _words.push_back(record); } } }}void WordStatic::writeFile(const char *filename)//c++的string类无法作为open的参数{ ofstream ofs(filename); if(!ofs.good()) { cout << "ofstream open error "<<endl; return ; } for(int i=0;i<_words.size();++i) { ofs << _words[i].word <<" "<<_words[i].count <<endl; } ofs.close();}int main(int arc,char **argv){ WordStatic ws; ws.readFile(argv[1]); ws.begin_sort(); ws.writeFile(argv[2]); return 0;}
/// /// @file wordStarix.cc /// @author guoleida(496919313@qq.com) /// @date 2017-08-02 08:48:22 ///#include <string>#include <map>#include <fstream>#include <sstream>#include <iostream>#include <time.h>using std::cout;using std::endl;using std::string;using std::ifstream;using std::ofstream;using std::map;using std::istringstream;class WordStatic{public:void readFile(const char * filename);void writeFile(const char * filename);private:map<string,int> words;};void WordStatic::readFile(const char * filename){ifstream ifs(filename);//打开文件流if(!ifs.good()){cout <<"ifstream open file error"<<endl;return;}string word;while( ifs >> word){words[word]++;}}void WordStatic::writeFile(const char * filename){ofstream ofs(filename);if(!ofs.good()){cout << "ofs open file error"<<endl;return;}map<string,int>::const_iterator it;int count=0;for(it = words.begin();it != words.end();++it){ofs << it->first <<" " << it->second <<endl;count+=it->second;}cout <<"共有"<<count << "词" <<endl;}int main(int argc,char **argv){if(argc!=3){cout <<"请输入输入输出文件名"<<endl;return 0;}time_t begin,end;time(&begin);WordStatic w;w.readFile(argv[1]);w.writeFile(argv[2]);time(&end);cout <<"用时" << end-begin <<"s" <<endl;return 0;}
阅读全文
0 0
- C语言实现英文文本词频统计
- 英文文本词频统计
- c++ 统计文本词频
- 【java】以词频升序统计文本词频
- c语言 词频统计
- 词频统计(文本格式)
- Huffman 统计词频(C#)
- C语言实现 词频统计
- 统计文本词频--建立树状结构
- python 文本单词提取和词频统计
- java进行文本单词的词频统计
- 统计一个英文文本的单词词频
- 词频统计程序(C语言/C++)
- 统计英文单词词频(c版)
- 词频统计
- 词频统计
- 词频统计
- 词频统计
- 【杭电OJ 2037】 今年暑假不AC (贪心)
- vector 清空操作
- 南阳理工14 -会场安排问题
- Android 功耗分析之wakelock
- 程序设计思维
- c++ 统计文本词频
- 无线安全审计工具aircrack-ng详解
- PAT乙级 1061. 判断题(15)
- jeeSite分页
- if语句的套路:
- JavaScript的程序设计思维与选择结构
- 欢迎使用CSDN-markdown编辑器
- linux下jdk版本切换
- 程序设计思维