Чтение онлайн

на главную - закладки

Жанры

Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:

2. Запустите небольшую программу из раздела 23.7; для этого может понадобиться инсталлировать библиотеку

boost::regex
на вашем компьютере (если вы этого еще не сделали) и настроить опции проекта или командной строки для установления связи с библиотекой
regex
, а затем использовать заголовки
regex
.

3. Используйте программу из задания 2 для проверки шаблонов из раздела 23.7.

Контрольные вопросы

1. Где мы находим “text”?

2. Какие

возможности стандартной библиотеки чаще всего используются для анализа текста?

3. Куда вставляет элемент функция

insert
— перед или после указанной позиции (или итератора)?

4. Что такое Unicode?

5. Как конвертировать тип в класс

string
и наоборот?

6. В чем заключается разница между инструкцией

cin>>s
и вызовом функции
getline(cin,s)
, если
s
— это объект класса
string
?

7. Перечислите стандартные потоки.

8. Что собой представляет ключ ассоциативного массива

map
? Приведите примеры полезных типов для ключей.

9. Как перемещаться по элементам контейнера класса

map
?

10. В чем заключается разница между классами

map
и
multimap
? Какой полезной операции, существующей в классе
map
, нет в классе
multimap
и почему?

11. Какие операции требуются для однонаправленного итератора?

12. В чем заключается разница между пустым и отсутствующим полем? Приведите два примера.

13. Зачем нужен символ управляющей последовательности при формировании регулярных выражений?

14. Как превратить регулярное выражение в переменную типа

regex
?

15. Какие строки соответствуют шаблону

\w+\s\d{4}
? Приведите три примера. Какой строковый литерал нужно использовать для инициализации переменной типа
regex
заданным шаблоном?

16. Как (в программе) выяснить, является ли строка корректным регулярным выражением?

17. Что делает функция

regex_search
?

18. Что делает функция

regex_match
?

19. Как представить символ точки (

.
) в регулярном выражении?

20. Как выразить понятие “не меньше трех” в регулярном выражении?

21. Относится ли символ 7 к группе

\w
? А символ
_
(подчеркивания)?

22. Какое обозначение используется для символов в верхнем регистре?

23. Как задать свой собственный набор символов?

24. Как извлечь значение из целочисленного поля?

25. Как представить число с плавающей точкой с помощью регулярного выражения?

26. Как извлечь число с плавающей точкой из строки, соответствующей шаблону?

27. Что такое частичное совпадение (sub-match)? Как его обнаружить?

Термины

Упражнения

1.

Запустите программу, работающую с файлом сообщений электронной почты; протестируйте ее, используя свой собственный, более длинный файл. Убедитесь, что в этом файле есть сообщения, вызывающие сообщения об ошибках, например, сообщения с двумя адресными строками, несколько сообщений с одинаковыми адресами и/или темами и пустые сообщения. Кроме того, протестируйте программу на примере, который вообще не является сообщением и не соответствует программной спецификации, например, на файле, не содержащем строк – ---.

2. Добавьте класс

multimap
и поместите в него темы сообщений. Пусть программа вводит строки с клавиатуры и выводит каждое сообщение, у которого тема совпадает с заданной строкой.

3. Модифицируйте пример из раздела 23.4 и примените регулярные выражения для выявления темы и отправителя сообщения электронной почты.

4. Найдите реальный файл с сообщениями электронной почты (т.е. файл, содержащий реальные сообщения) и модифицируйте программу так, чтобы она могла выявлять темы по именам отправителей, которые вводятся пользователем с клавиатуры.

5. Найдите большой файл с сообщениями электронной почты (тысячи сообщений), а затем запишите его в объекты класса

multimap
и
unordered_multimap
. Обратите внимание на то, что в нашем приложении никак не используется преимущество упорядоченности объекта класса
multimap
.

6. Напишите программу, обнаруживающую даты в текстовом файле. Выведите на печать каждую строку, содержащую хотя бы одну дату в формате

linenumber:line
. Начните с регулярного выражения для простого формата, например 12/24/2000, и протестируйте ее на нем. Затем добавьте новые форматы.

7. Напишите программу (аналогичную предыдущей), которая находит номера кредитных карточек в файле. Разберитесь в том, какие форматы на самом деле используются для записи номеров кредитных карточек, и реализуйте их проверку в вашей программе.

8. Модифицируйте программу из раздела 23.8.7 так, чтобы на ее вход поступали шаблон и имя файла. Результатом работы программы должны быть пронумерованные строки (

line–number:line
), соответствующие шаблону. Если соответствия не выявлены, ничего выводить не надо.

9. Используя функцию

eof
(раздел Б.7.2), можно определить, какая строка в таблице является последней. Используйте эту функцию для упрощения программы, анализирующей таблицу (см. раздел 23.9). Проверьте вашу программу на файлах, содержащих пустую строку после таблицы, а также на файлах, которые не заканчиваются переходом на новую строку.

10. Модифицируйте программу для проверки таблицы из раздела 23.9 так, чтобы она выводила новую таблицу, в которой строки, имеющие одинаковые первые цифры (означающие год: первому классу соответствует число 1), были объединены.

Поделиться:
Популярные книги

Огненный князь

Машуков Тимур
1. Багряный восход
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Огненный князь

Тайный наследник для миллиардера

Тоцка Тала
Любовные романы:
современные любовные романы
5.20
рейтинг книги
Тайный наследник для миллиардера

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Я — Легион

Злобин Михаил
3. О чем молчат могилы
Фантастика:
боевая фантастика
7.88
рейтинг книги
Я — Легион

Изгой. Пенталогия

Михайлов Дем Алексеевич
Изгой
Фантастика:
фэнтези
9.01
рейтинг книги
Изгой. Пенталогия

Попытка возврата. Тетралогия

Конюшевский Владислав Николаевич
Попытка возврата
Фантастика:
альтернативная история
9.26
рейтинг книги
Попытка возврата. Тетралогия

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Брачный сезон. Сирота

Свободина Виктория
Любовные романы:
любовно-фантастические романы
7.89
рейтинг книги
Брачный сезон. Сирота

Отмороженный 10.0

Гарцевич Евгений Александрович
10. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный 10.0

Машенька и опер Медведев

Рам Янка
1. Накосячившие опера
Любовные романы:
современные любовные романы
6.40
рейтинг книги
Машенька и опер Медведев

Идеальный мир для Социопата 7

Сапфир Олег
7. Социопат
Фантастика:
боевая фантастика
6.22
рейтинг книги
Идеальный мир для Социопата 7

Провинциал. Книга 7

Лопарев Игорь Викторович
7. Провинциал
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Провинциал. Книга 7

LIVE-RPG. Эволюция 2

Кронос Александр
2. Эволюция. Live-RPG
Фантастика:
социально-философская фантастика
героическая фантастика
киберпанк
7.29
рейтинг книги
LIVE-RPG. Эволюция 2

Восход. Солнцев. Книга I

Скабер Артемий
1. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга I