日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ primer文本查询程序 自编加强版(c++primer5th 练习12.32-33)

發布時間:2024/4/18 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ primer文本查询程序 自编加强版(c++primer5th 练习12.32-33) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//文件 functions.cc#include <iostream> #include <string> #include <vector> #include <memory> #include <fstream> #include <map> #include <set> #include <sstream> #include "textquery.h" #include "resultquery.h" #include "strblob.h" using namespace std; TextQuery::TextQuery()= default; TextQuery::TextQuery(ifstream &is){string text;while(getline(is,text)){file.push_back(text);int n = file.size() - 1;istringstream line(text);string word;while(line >> word){auto &lines = wm[word];if(!lines)//我們在第一次遇到這個單詞時,這個指針是空的lines.reset(new set<line_no>);//分配一個新的空間lines->insert(n);} } } QueryResult TextQuery::query(const string &sought)const {shared_ptr<set<TextQuery::line_no>> nodata(new set<TextQuery::line_no>);auto loc = wm.find(sought);if(loc == wm.end())return QueryResult(sought,nodata,file);//not foundelsereturn QueryResult(sought,loc->second,file); }ostream &print(ostream &os,const QueryResult &qr) { os << qr.sought << " occurs " << qr.lines->size() << " "<<make_plural(qr.lines->size(),"times","s") << endl; for(auto num : *qr.lines)os << "\t(line " << num + 1 << ") " << (*qr.file.Data())[num] << endl; return os; }const string make_plural(size_t i,const string &s,const string&ch) { if(i > 1)return s + ch; else return s; }StrBlob::StrBlob(initializer_list<string> l1):data(make_shared<vector<string>>(l1)){} string &StrBlob::front(){return data->front();} string &StrBlob::back(){return data->back(); } const string &StrBlob::front()const {return data->front();} const string &StrBlob::back()const{return data->back();} size_t StrBlob::size()const{return data->size();} bool StrBlob::empty()const{return data->empty();} void StrBlob::push_back(const string &s) {data->push_back(s); } string StrBlob::pop(){ string s = data->back(); data->pop_back(); return s; } //main.cc#include <string> #include <iostream> #include <fstream> #include <memory> #include <vector> #include "textquery.h" #include "resultquery.h" #include "strblob.h" using namespace std; int main() { ifstream in("data.txt"); TextQuery t(in); QueryResult q = t.query("bye"); print(cout,q); print(cout,t.query("are")); for (auto i = t.query("are").begin();i != t.query("are").end();++i)cout << *i << endl; StrBlob s = q.get_file(); //嘗試下打印文件內容 for(auto i = s.Data()->begin();i != s.Data()->end();++ i)cout << *i << endl;return 0; } //文件resultquery.h#ifndef RESULTQUERY_H #define RESULTQUERY_H#include <string> #include <vector> #include <iostream> #include <memory> #include <set> #include <map> #include "strblob.h" using namespace std; class QueryResult{friend ostream & print(ostream &,const QueryResult &);public: QueryResult():lines(new set<TextQuery::line_no>){} QueryResult(const string &s,shared_ptr<set<TextQuery::line_no>> p,const StrBlob & f):sought(s),lines(p),file(f){} set<TextQuery::line_no>::iterator begin()const{return lines->begin();} set<TextQuery::line_no>::iteratorend()const{return lines->end();} const StrBlob & get_file()const{return file;} StrBlob &get_file(){return file;}private: string sought; //查詢單詞 //注意使用的line_no是TextQuery類內定義的類型 shared_ptr<set<TextQuery::line_no>> lines; //出現的行號 StrBlob file; //輸入文件 }; const string make_plural(size_t i,const string &s,const string &ch);ostream &print(ostream &,const QueryResult &); #endif //strblob.h#ifndef STRBLOB_H #define STRBLOB_H#include <iostream> #include <string> #include <memory> #include <vector>using namespace std; class ResultQuery; class StrBlob{public:StrBlob():data(make_shared<vector<string>>()){}StrBlob(initializer_list<string> l1);string& front();string& back();const string &front()const;const string &back()const;size_t size()const;bool empty()const;void push_back(const string &);string pop();shared_ptr<vector<string>> Data()const{return data;}private:void check(size_t i,const string &msg);shared_ptr<vector<string>> data; };#endif //文件textquery.h#ifndef TEXTQUERY_H #define TEXTQUERY_H #include <string> #include <fstream> #include <iostream> #include <set> #include <map> #include <vector> #include "strblob.h" using namespace std;class QueryResult; class TextQuery{public: using line_no = std::vector<string>::size_type; TextQuery(); TextQuery(ifstream & ); QueryResult query(const string &)const;private:StrBlob file; map<string,shared_ptr<set<line_no>>> wm; };#endif

文件data.txt內容如下:?

you are good enough are you you are happy haha you good good good enough

?

運行結果

bye occurs 0 times are occurs 2 timess(line 1) you are good enough are you(line 2) you are happy 0 1 you are good enough are you you are happy haha you good good good enough

?

總結

以上是生活随笔為你收集整理的c++ primer文本查询程序 自编加强版(c++primer5th 练习12.32-33)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天海翼av在线 | 国产免费不卡视频 | 少妇脱了内裤让我添 | 午夜在线免费观看视频 | 福利所第一导航 | 国产中文在线观看 | 主播一区二区 | 免费观看高清在线 | 国产夜色视频 | 性高潮网站 | 精品国产一区二区在线观看 | 免费一级特黄 | 韩国视频一区二区 | 综合久久影院 | 一区二区三区av在线 | 扒开美女内裤狂揉下部 | 久久久精品中文字幕麻豆发布 | 麻豆最新网址 | 日本不卡三区 | 97国产在线 | 一区二区三区视频在线观看免费 | 女儿的朋友在线播放 | 91cn.com| 日韩在线免费视频观看 | 少妇被黑人到高潮喷出白浆 | 成人无码久久久久毛片 | 午夜剧场黄色 | 国产一区二区三区四区五区美女 | 一级做a爰片久久毛片 | 1000亚洲裸体人体 | 超碰97国产 | 欧美日韩一区二区三区在线电影 | 欧美亚洲色综久久精品国产 | 99成人精品视频 | 欧美内谢| 日本一区二区三区视频在线观看 | 欧美大片免费播放器 | 光明影院手机版在线观看免费 | 亚洲一卡二卡三卡四卡 | 精品国产一二三区 | 亚洲专区区免费 | 亚洲一区图片 | 国产成人麻豆免费观看 | 成年视频在线播放 | 五月天久久久久久 | 久久久国产一区二区三区 | 中文字幕亚洲精品在线 | 38激情| 日本中文字幕在线视频 | 色姑娘久 | 国产成人午夜视频 | 在线草 | 欧美色图88 | 男男黄色片 | 天堂8在线天堂资源bt | 青青草原综合网 | 少妇特黄a一区二区三区88av | 在线免费黄网 | 中文在线字幕av | 黄色片地址 | 亚洲美女自拍偷拍 | 大胸奶汁乳流奶水出来h | 污污网址在线观看 | 亚洲综合在线观看视频 | 五月婷婷丁香六月 | 人妻无码中文字幕 | 亚洲自拍偷拍图 | 操操网站 | 性欧美18—19sex性高清 | 日本激情一区 | 99免费在线视频 | 免费观看91视频 | 男女午夜爽爽爽 | 亚洲美女色 | 国产又粗又猛又爽 | 欧美aaa级| 亚洲欧洲日韩 | 欧美日韩一区二区三区国产精品成人 | 青青草国产在线播放 | 欧美男女交配视频 | 福利片一区二区 | 欧美熟妇精品久久久久久 | 在线h片| 亚洲精品久久久久久久蜜桃 | 欧美91看片特黄aaaa | 国产欧美日韩成人 | 精品无码国产av一区二区三区 | 日本黄色一级网站 | 久久精品色妇熟妇丰满人妻 | 色花av| 爆操白虎逼 | 人操人人 | 亚州| 性色视频网站 | 亚洲天堂第一页 | 五月情网| 山村大伦淫第1部分阅读小说 | 国产福利在线观看视频 | 一级做a爱片久久 |