c 學習筆記 文字查詢程式

2021-06-09 20:13:31 字數 1686 閱讀 8487

需求:

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...