書上的乙個比較簡單的例題,可以輸出文字中單詞總共出現的次數,所在的行數及所在行的內容。
主要的思路是建立乙個vector來分行儲存文字,然後將單詞及單詞出現行數(set)建立乙個map。通過查詢單詞獲得其對映的set。set的size為出現的次數,set的元素為出現的行數,通過set元素作為vector下標獲得所在行內容。
1、textquery.h
#pragma once
#include
#include
#include
#include
#include
#include
#include
#include
//不要在標頭檔案裡包含太多頭檔案,一般包含在cpp中
using
namespace
std;
class queryresult; //先宣告後使用。要返回內容多,最簡單的方法是定義乙個類
class textquery
;
2、textquery.cpp
#include "textquery.h"
#include "queryresult.h"
textquery::textquery(ifstream &is):file(new
vector
)lines->insert(n); //將行號插入set,如果重複則不執行任何操作}}
}textquery::~textquery()
queryresult textquery::query(const
string &sought)const
else
}
3、queryresult.h
#pragma once
#include "textquery.h"
class queryresult
private:
string sought; //查詢的單詞
shared_ptr
> lines; //包含的行數
shared_ptr
> file; //輸入檔案
};
4、main.cpp
#include "queryresult.h"
#include "textquery.h"
int main()
ostream &print(ostream &os, const queryresult &qr)
return os;
}void runquery(ifstream &file)
print(cout, tq.query(s)) << endl;
}}
文字查詢程式c primer12 32
標頭檔案strblob以及strblobptr 根據題目要求用自己定義的strblob來代替vector來儲存輸入檔案 可以更加安全的共享底層資料 include include include include include using namespace std class strblob st...
c primer習題10 6 文字查詢程式
ifndef textquery h define textquery h include include include include include includeusing namespace std class text query setrun query const string co...
文字查詢程式
我們實現乙個簡單的文字查詢程式。我們的程式允許使用者在乙個給定檔案中查詢單詞,查詢結果是單詞在檔案 現的次數及所在行的列表。如果乙個單詞在一行 現多次,此行只列出一次。include include include include include include include include us...