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

Оператор вывода выводит битовую схему объекта bitset:

bitset<16> bits;

cin >> bits; // читать до 16 символов 1 или 0 из cin

cout << "bits: " << bits << endl; // вывести прочитанное

Использование наборов битов

Для иллюстрации применения наборов битов повторно реализуем код оценки из раздела 4.8, использовавший тип unsigned long для представления результатов контрольных вопросов (сдал/не сдал) для 30 учеников:

bool status;

// версия, использующая побитовые операторы

unsigned long quizA = 0; // это значение используется

                         // как коллекция битов

quizA |= 1UL << 27;      // отметить ученика номер 27 как сдавшего

status = quizA & (1UL << 27); // проверить оценку ученика номер 27

quizA &= ~(1UL << 27);        // ученик номер 27 не сдал

// эквивалентные действия с использованием набора битов

bitset<30> quizB;   // зарезервировать по одному биту на студента; все

                    // биты инициализированы 0

quizB.set(27);      // отметить ученика номер 27 как сдавшего

status = quizB[27]; // проверить оценку ученика номер 27

quizB.reset(27);    // ученик номер 27 не сдал

Упражнения раздела 17.2.2

Упражнение 17.10. Используя последовательность 1, 2, 3, 5, 8, 13, 21, инициализируйте набор битов, у которого установлена 1 в каждой позиции, соответствующей числу в этой последовательности. Инициализируйте по умолчанию другой набор битов и напишите небольшую программу для установки каждого из соответствующих битов.

Упражнение 17.11. Определите структуру данных, которая содержит целочисленный объект, позволяющий отследить (сдал/не сдал) ответы на контрольную из 10 вопросов. Какие изменения (если они вообще понадобятся) необходимо внести в структуру данных, если в контрольной станет 100 вопросов?

Упражнение 17.12. Используя структуру данных из предыдущего вопроса, напишите функцию, получающую номер вопроса и значение, означающее правильный/неправильный ответ, и изменяющую результаты контрольной соответственно.

Упражнение 17.13. Создайте целочисленный объект, содержащий правильные ответы (да/нет) на вопросы контрольной. Используйте его для создания оценок контрольных вопросов для структуры данных из предыдущих двух упражнений.

<p>17.3. Регулярные выражения</p>

Регулярное выражение (regular expression) — это способ описания последовательности символов. Это чрезвычайно мощное средство программирования. Однако описание языков, используемых для определения регулярных выражений, выходит за рамки этой книги. Лучше сосредоточиться на использовании библиотеки регулярных выражений языка С++ (библиотеки RE), являющейся частью новой библиотеки. Библиотека RE определена в заголовке regex и задействует несколько компонентов, перечисленных в табл. 17.4.

Таблица 17.4. Компоненты библиотеки регулярных выражений

regexКласс, представляющий регулярное выражение
regex_match()Сравнивает последовательность символов с регулярным выражением
regex_search()Находит первую последовательность, соответствующую регулярному выражению
regex_replace()Заменяет регулярное выражение, используя заданный формат
sregex_iteratorАдаптер итератора, вызывающий функцию regex_search() для перебора совпадений в строке
smatchКласс контейнера, содержащего результаты поиска в строке
ssub_matchРезультаты совпадения выражений в строке

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

Класс regex представляет регулярное выражение. Кроме инициализации и присвоения, с классом regex допустимо немного операций. Они перечислены в табл. 17.6.

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных