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

Тут можно читать онлайн Стенли Липпман - Язык программирования C++. Пятое издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Издательский дом Вильямс, год 2014. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Язык программирования C++. Пятое издание
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс
  • Год:
    2014
  • Город:
    Москва
  • ISBN:
    978-5-8459-1839-0
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Стенли Липпман - Язык программирования C++. Пятое издание краткое содержание

Язык программирования C++. Пятое издание - описание и краткое содержание, автор Стенли Липпман, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!
Вы держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под
. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. В соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.
С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать их наилучшие способы применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.
Стенли Б. Липпман Жози Лажойе Барбара Э. Му • Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием
• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования
• Изучите принципы и узнайте почему язык С++11 работает именно так
• Воспользуйтесь множеством перекрестных ссылок, способных помочь вам объединить взаимосвязанные концепции и проникнуть в суть
• Ознакомьтесь с современными методиками обучения и извлеките пользу из упражнений, в которых подчеркиваются ключевые моменты, позволяющие избежать проблем
• Освойте лучшие методики программирования и закрепите на практике изученный материал
Исходный код примеров можно загрузить с веб-страницы книги на сайте издательства по адресу: http://www.williamspublishing.com

Язык программирования C++. Пятое издание - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования C++. Пятое издание - читать книгу онлайн бесплатно, автор Стенли Липпман
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Упражнение 17.15. Напишите программу, используя схему поиска слов, нарушающих правило " i перед е , кроме как после c ". Организуйте приглашение для ввода пользователем слова и вывод результата его проверки. Проверьте свою программу на примере слов, которые нарушают и не нарушают это правило.

Упражнение 17.16. Что будет при инициализации объекта класса regexв предыдущей программе значением "[^c]ei"? Проверьте свою программу, используя эту схему, и убедитесь в правильности своих ожиданий.

17.3.2. Типы итераторов классов соответствия и regex

Программа проверки правила " i перед е , кроме как после с " из раздела 17.3.1 выводила только первое соответствие в исходной последовательности. Используя итератор sregex_iterator, можно получить все соответствия. Итераторы класса regexявляются адаптерами итератора (см. раздел 9.6), привязанные к исходной последовательности и объекту класса regex. Как было описано в табл. 17.8, для каждого типа исходной последовательности используется специфический тип итератора. Операции с итераторами описаны в табл. 17.9.

Когда итератор sregex_iteratorсвязывается со строкой и объектом класса regex, итератор автоматически позиционируется на первое соответствие в заданной строке. Таким образом, конструктор sregex_iterator()вызывает функцию regex_search()для данной строки и объекта класса regex. При обращении к значению итератора возвращается объект класса smatch, соответствующий результатам самого последнего поиска. При приращении итератора для поиска следующего соответствия в исходной строке вызывается функция regex_search().

Таблица 17.9. Операции с итератором sregex_iterator

Эти операции применимы также к итераторам cregex_iterator, wsregex_iteratorи wcregex_iterator
sregex_iterator it(b, e, r); it— это итератор sregex_iterator, перебирающий строку, обозначенную итераторами bи е. Вызов regex_search(b, е, r)устанавливает итератор itна первое соответствие во вводе
sregex_iterator end; Итератор sregex_iterator, указывающий на позицию после конца
*it it-> Возвращает ссылку на объект класса smatchили указатель на объект класса smatchот самого последнего вызова функции regex_search()
++it it++ Вызывает функцию regex_search()для исходной последовательности, начиная сразу после текущего соответствия. Префиксная версия возвращает ссылку на приращенный итератор, а постфиксная возвращает прежнее значение
it1 == it2 it1 != it2 Два итератора sregex_iteratorравны, если оба они итераторы после конца. Два не конечных итератора равны, если они созданы из той же исходной последовательности и объекта класса regex
Использование итератора sregex_iterator

В качестве примера дополним программу поиска нарушения правила " i перед е , кроме как после с " в текстовом файле. Подразумевается, что fileкласса stringсодержит все содержимое исходного файла, на котором осуществляется поиск. Новая версия программы будет использовать ту же схему, что и ранее, но для поиска применим итератор sregex_iterator:

// найти символы ei, следующие за любым символом, кроме с

string pattern("[^с]ei");

// искомая схема должна присутствовать в целом слове

pattern = "[[:alpha:]]*" + pattern + "[[ :alpha:]]*";

regex r(pattern, regex::icase); // игнорируем случай выполнения

// соответствия

// будет последовательно вызывать regex_search() для поиска всех

// соответствий в файле

for (sregex_iterator it(file.begin(), file.end(), r), end_it;

it != end_it; ++it)

cout << it->str() << endl; // соответствующее слово

Цикл forперебирает все соответствия rв строке file. Инициализатор в цикле forопределяет итераторы itи end_it. При определении итератора itконструктор sregex_iterator()вызывает функцию regex_search() для позиционирования итератора itна первое соответствие в строке file.

Пустой итератор sregex_iterator, end_itдействует как итератор после конца. Приращение в цикле for"перемещает" итератор, вызвав функцию regex_search(). При обращении к значению итератора возвращается объект класса smatch, представляющий текущее соответствие. Для вывода соответствующего слова вызывается функция-член str().

Данный цикл forкак бы перепрыгивает с одного соответствия на другое, как показано на рис. 17.1.

Рис 171 Использование итератора sregexiterator Использование данных - фото 646

Рис. 17.1. Использование итератора sregex_iterator

Использование данных соответствия

Если запустить этот цикл для строки test_strиз первоначальной программы, вывод был бы таким:

freind

theif

Однако вывод только самого слова, соответствующего заданному выражению, не очень полезен. При запуске программы для большой исходной последовательности, например для текста этой главы, имело бы смысл увидеть контекст, в котором встретилось слово. Например:

hey read or write according to the type

>>> being <<<

handled. The input operators ignore whi

Кроме возможности вывода части исходной строки, в которой встретилось соответствие, классы соответствия предоставляют более подробную информацию о соответствии. Возможные операции с этими типами перечислены в табл. 17.10 и 17.11.

Более подробная информация о smatchи ssub_matchприведена в следующем разделе, а пока достаточно знать, что они предоставляют доступ к контексту соответствия. У типов соответствия есть функции-члены prefix()и suffix(), возвращающие объект класса ssub_match, представляющий часть исходной последовательности перед и после текущего соответствия соответственно. У класса ssub_matchесть функции-члены str()и length(), возвращающие соответствующую строку и ее размер соответственно. Используя эти функции, можно переписать цикл программы проверки правописания:

// тот же заголовок цикла for, что и прежде

for (sregex_iterator it(file.begin(), file.end(), r), end_it;

it != end_it; ++it) {

auto pos = it->prefix().length(); // размер префикса

pos = pos > 40 ? pos - 40 : 0; // необходимо до 40 символов

cout << it->prefix().str().substr(pos) // последняя часть префикса

<< "\n\t\t>>> " << it->str() << " <<<\n" // соответствующее

// слово

<< it->suffix().str().substr(0, 40) // первая часть суффикса

<< endl;

}

Таблица 17.10. Операции с типом smatch

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стенли Липпман читать все книги автора по порядку

Стенли Липпман - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Язык программирования C++. Пятое издание, автор: Стенли Липпман. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x