С++ для начинающих

       

Соберем все вместе


Функция main() для нашего приложения текстового поиска выглядит следующим образом:

#include "TextQuery.h"

int main()

{

   TextQuery tq;

   tq.build_up_text();

   tq.query_text();

}

Функция-член build_text_map() – это не что иное, как переименованная функция doit() из раздела 6.14:

inline void

TextQuery::

build_text_map()

{



   retrieve_text();

   separate_words();

   filter_text();

   suffix_text();

   strip_caps();

   build_word_map();

}

Функция-член query_text() заменяет одноименную функцию из раздела 6.14. В первоначальной реализации в ее обязанности входили прием запроса от пользователя и вывод ответа. Мы решили сохранить за query_text() эти задачи, но реализовать ее по-другому[19]:

void

TextQuery::query_text()

{

    /* локальные объекты:

     *

     * text: содержит все слова запроса

     * query_text: вектор для хранения пользовательского запроса

     * caps: фильтр для поддержки преобразования

     * прописных букв в строчные

     *

     * user_query: объект UserQuery, в котором инкапсулировано

     *             собственно вычисление ответа на запрос

     */

           string text;

           string caps( "ABCDEFGHIJKLMNOPQRSTUVWXYZ" );

           vector<string, allocator> query_text;

           UserQuery user_query;

     // инициализировать статические члены UserQuery

           NotQuery::all_locs( text_locations->second );

           AndQuery::max_col( &line_cnt );

           UserQuery::word_map( word_map );

           do {

           // удалить предыдущий запрос, если он был

                  query_text.clear();

           cout << "Введите запрос. Пожалуйста, разделяйте все его "

                        << "элементы пробелами.\n"

                << "Запрос (или весь сеанс) завершается точкой ( . ).\n\n"

                         << "==> ";

          

          /*

           * прочитать запрос из стандартного ввода,



Содержание раздела