Читаем C++ для начинающих полностью

// стандартные заголовочные файлы С++

#include algorithm

#include string

#include vector

#include utility

#include map

#include set


// заголовочный файл iostream, не отвечающий стандарту

#include fstream.h


// заголовочные файлы С

#include stddef.h

#include ctype.h


// typedef для удобства чтения

typedef pairshort,short location;

typedef vectorlocation,allocator loc;

typedef vectorstring,allocator text;

typedef pairtext*,loc* text_loc;


class TextQuery {

public:

TextQuery() { memset( this, 0, sizeof( TextQuery )); }

static void

filter_elements( string felems ) { filt_elems = felems; }


void query_text();

void display_map_text();

void display_text_locations();

void doit() {

retrieve_text();

separate_words();

filter_text();

suffix_text();

strip_caps();

build_word_map();

}


private:

void retrieve_text();

void separate_words():

void filter_text();

void strip_caps();

void suffix_textQ;

void suffix_s( string );

void build_word_map();

private:

vectorstring,allocator *lines_of_text;

text_loc *text_locations;

map string,loc*,

lessstring,allocator *word_map;

static string filt_elems;

};


string TextQuery::filt_elems( "\", •;: !?)(\V" );


int main()

{

TextQuery tq;

tq.doit();

tq.query_text();

tq.display_map_text();

}


void

TextQuery::

retrieve_text()

{

string file_name;


cout "please enter file name: ";

cin file_name;


ifstream infile( file_name.c_str(), ios::in );

if ( !infile ) {

cerr "oops' unable to open file "

file_name " -- bailing out!\n";

exit( -1 );

}

else cout "\n";


lines_of_text = new vectorstring,allocator;

string textline;


while ( getline( infile, textline, '\n' ))

lines_of_text-push_back( textline );


}


void

TextQuery::

separate_words()

{

vectorstring,allocator *words =

new vectorstring,allocator;

vectorlocation,allocator *locations =

new vectorlocation,allocator;

for ( short line_pos = 0; line_pos lines_of_text-size();

line_pos++ )

{

short word_pos = 0;

string textline = (*lines_of_text)[ line_pos ];

string::size_type eol = textline.1ength();

string::size_type pos = 0, prev_pos = 0;


while (( pos = textline.find_first_of( ' ', pos ))

!= string::npos )

{

words-push_back(

textline.substr( prev_pos, pos - prev_pos ));

locations-push_back(

make_pair( line_pos, word_pos ));


word_pos++; pos++; prev_pos = pos;

}

words-push_back(

textline.substr( prev_pos, pos - prev_pos ));

locations-push_back(make_pair(line_pos,word_pos));

}

text_locations = new text_loc( words, locations );

}



void

TextQuery::

filter_text()

{

if ( filt_elems.empty() )

return;

vectorstring,allocator *words = text_locations-first;

vectorstring,allocator::iterator iter = words-begin();

Перейти на страницу:

Похожие книги

Язык программирования C++. Пятое издание
Язык программирования C++. Пятое издание

Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!Р'С‹ держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под стандарт С++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. Р' соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать РёС… наилучшие СЃРїРѕСЃРѕР±С‹ применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.Стенли Р'. Липпман работал старшим консультантом в Jet Propulsion Laboratory, архитектором РіСЂСѓРїРїС‹ Visual С++ корпорации Microsoft, техническим сотрудником Bell Laboratories и главным инженером- программистом по анимации в кинокомпаниях Disney, DreamWorks, Pixar и PDI.Р–РѕР·и Лажойе, работающий ныне в кинокомпании Pixar, был членом канадской РіСЂСѓРїРїС‹ разработчиков компилятора C/C++ корпорации IBM, а также возглавлял рабочую группу базового языка С++ в составе международной организации по стандартизации ANSI/ISO.Барбара Э. Му имеет почти тридцатилетний опыт программирования. На протяжении пятнадцати лет она работала в компании AT&T, сотрудничая с Бьярне Страуструпом, автором языка С++, и несколько лет руководила РіСЂСѓРїРїРѕР№ разработчиков С++.• Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования• Р

Барбара Э. Му , Жози Лажойе , Стенли Б. Липпман

Программирование, программы, базы данных
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT