一 自我简介
我叫高宇,来自吉林辽源,虽然本科阶段接触过一些小的项目,但是除了本科毕设还没有独立完成过一个比较系统的项目,对于编程自认为能力不强,从毕业到现在写过的代码更是寥寥无几,通过这门课的学习,也是对自己的一种提升,会尽自己最大努力跟下来,也想看看自己在这方面到底能不能坚持下来,能积累一点是一点。
二 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

还需要继续完成代码上传功能。
原文:http://www.cnblogs.com/gaogaoupc/p/5259824.html