一 自我简介
我叫高宇,来自吉林辽源,虽然本科阶段接触过一些小的项目,但是除了本科毕设还没有独立完成过一个比较系统的项目,对于编程自认为能力不强,从毕业到现在写过的代码更是寥寥无几,通过这门课的学习,也是对自己的一种提升,会尽自己最大努力跟下来,也想看看自己在这方面到底能不能坚持下来,能积累一点是一点。
二 github学习
我和曹春娇共同完成的,上传代码分为客户端直接上传,还有命令行上传(我使用的是命令行上传),由于没有成功建立仓库(邮件验证不成功,问题截图如下)
,所以代码还没有上传成功,
词频统计代码如下:
#include <string> #include "Word.h" #include <regex> #include <iostream> #include <fstream> using namespace std; bool sortByNum(Word* w1, Word* w2) { if (w1 && w2) { return w1->getNum() > w2->getNum(); } return true; } void sortVector(std::vector<Word*> vec) { std::sort(vec.begin(), vec.end(), sortByNum); } void printAllObject(std::vector<Word*> vec) {ortVector(vec); for (auto p : vec) { if (p) { std::cout << p->getWord() << " : " << p->getNum() << endl; } } } void delectAllObject(std::vector<Word*> vec) { for (int i = 0; i < vec.size(); ++i) { auto p = vec.at(i); if (p) { delete p; } } } int main(int argc, const char * argv[]) { const char* filename = "/Users/ericwang/Desktop/WordsFrequency/WordsFrequency/word.txt"; //绝对文件路径 char* buffer; long size; ifstream file(filename, ios::in|ios::binary|ios::ate); //打开文件 size = file.tellg(); //获取文件长度 file.seekg(0, ios::beg); buffer = new char[size]; file.read(buffer, size); file.close(); std::vector<Word*> vec; const std::regex pattern("\w+"); //正则表达式匹配模式 std::string target = buffer; const std::sregex_token_iterator end; for (std::sregex_token_iterator i (target.begin(), target.end(), pattern); i != end; ++i) { std::string s = *i; Word* p = new Word(); p->setWord(*i); p->setNum(); bool isExist = false; for (auto p: vec) { //快速遍历vector 用来查看是否已经存在该单词 , auto 是自动获取vector里面存储的对象类型. p代表取出一个对象 if (p && (p->getWord() == *i)) { //如果取出的p不为空并且p的单词是当前匹配到的*i isExist = true; //把isExist设置为true代表已经存在该单词 p->setNum(); //把该单词的使用次数加1 break; //已经找到该单词结束快速遍历 } } if (!isExist) { //如果快速遍历结束, isExist的值还是false, 代表这是个新找到的单词, 需要存到vector里面 vec.push_back(p); //push到vector的最后一个位置 } } printAllObject(vec); //输出结果 delectAllObject(vec); //删除所有创建的对象 delete buffer; //删除缓冲字符串 return 0; } #include <stdio.h> #include "Word.h" Word::Word(): word("") ,num(0) { } Word::~Word() { } void Word::setWord(std::string s) { word = s; } std::string Word::getWord() { return word; } void Word::setNum() { ++num; } uint16_t Word::getNum() { return num; } bool Word::operator > (const Word& pinfo) const { return num > pinfo.num; } bool Word::operator < (const Word& pinfo) const { return num < pinfo.num; } #ifndef WordsFrequency_Word_h #define WordsFrequency_Word_h #include <iostream> using namespace std; class Word { public: Word(); ~Word(); void setWord(std::string s); std::string getWord(); void setNum(); uint16_t getNum(); bool operator > (const Word& pinfo) const; bool operator < (const Word& pinfo) const; private: std::string word; uint16_t num; }; #endif
还需要继续完成代码上传功能。