需求:
1. 開啟需要查詢的文字檔案,將檔案的內容以行的方式讀出並儲存起來,需要記錄行號和對應的文字。
2. 把每一行以單詞進行拆分,把每個單詞及該單詞出現的行號記錄起來,乙個單詞可能出現在多行。
3. 處理單詞查詢功能,返回指定單詞出現在文字中的所有行號集合。
4. 遍歷得出的行號集合,根據行號從1中返回對應下標的文字。
資料結構
1. 把文字內容儲存到乙個vector容器物件中,每一行就是vector的乙個元素,行號對應於元素的下標。
2. 每個單詞所在的行號儲存到乙個set容器物件中。
3. 把每個單詞和其所在的行號關聯起來,儲存到map容器物件中。
下面是原始碼實現,包含三個檔案,textquery.h,textquery.cpp,client.cpp。
textquery.h
#ifndef text_query_h
#define text_query_h
#include #include #include #include #include using namespace std;
class textquery ;
#endif
textquery.cpp
#include #include "textquery.h"
void textquery::storefile(ifstream &is)
void textquery::buildmap()
}
void textquery::readfile(ifstream &is)
settextquery::querywordlinenos(const string &word) const
string textquery::gettext(lineno num) const
client.cpp
#include #include "textquery.h"
ifstream& openfile(ifstream &is,const string &filename)
int main(int argc,char **argv)
setlinenos = tq.querywordlinenos(word);
cout << "fount lines:" << linenos.size() << endl;
set::iterator it = linenos.begin();
while(it != linenos.end())
} return 0;
}
text.txt內容:
my name is alexzhou
hello word
my name
is alexzhou
welcome here
welcome beijing
vs2010: 在專案屬性裡面 配置屬性-》除錯-》命令引數 裡面寫上引數:e:\\text.txt 。
程式執行結果如圖:
文字查詢程式
我們實現乙個簡單的文字查詢程式。我們的程式允許使用者在乙個給定檔案中查詢單詞,查詢結果是單詞在檔案 現的次數及所在行的列表。如果乙個單詞在一行 現多次,此行只列出一次。include include include include include include include include us...
c 容器實現文字查詢程式
vs2010編譯通過 缺點 無大小寫區分,沒有剔除標點符號 search.h pragma once include include include include include include include include include using namespace std class c...
C 單詞查詢程式(自己錄入文字)
我是程式設計新手,第一次寫。注釋很詳細,都是自己的理解,錯了也合理。呵呵 include include include include include include using namespace std 類定義 class textquery setrun query const string...