Главная » Просмотр файлов » Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004

Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791), страница 149

Файл №1160791 Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004) 149 страницаБ. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791) страница 1492019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 149)

1. (*2) Напишите функпию, принимаюв~ую две строки з(г1пй и возвращающую строку, которая является конкатенацией этих двух строк с точкой между ними. Например, если даноЯ1е и шн1е, функция должна возвратиться(е.шг11е. Сделайте тоже самое с С-строками, используя только возможности С, такие как ша((ос Ц и з(г1еп Ц. Сравните две функции. Что будет подходящим критерием сравнения? 2. (*2) Перечислите различия между вес(ог и Ьаз(с з(г1пв'.

Какие различия сушественны? 3. ("2) Средства для работы со строками не слишком регулярны. Например, вы можете присвоить строке значение типа сйаг, но не можете инициализировать з(ггпу;значением сЬпг. Составьте список таких нерегулярностей. Какие из них можно устранить, не усложняя использование строк? Какие другие нерегулярности это вызовет? 4. ("1.5) В классе Ьаз1с з(г?пд множество членов. Какие из них моглн бы быть нечленами без потери эффективности н удобства записи? 5. (*1.5) Напишите версию Ьасй (пзег1ег 11 (9 19.2А), работающую с Ьаз(с з(г(пй.

6. (*2) Завершите тип Впз7с зибз1гтд иэ 6 20.3.13 и интегрируйте его с типом Яг1пп, чтобы перегрузить оператор 0 для обозначения «подстрока из>, а в остальном получившийся тип должен действовать как зЫпд. 7. (*2.5) Напишите функциюЯпс((), которая находит первое вхождение простого регулярного выражения в строку. Используйте з для обозначения «любой символ», * — для обозначения любого числа символов, не совпадающих со следующей частью регулярного выражения, и [абс1 — для обозначения любого символа из тех, что стоят между квадратными скобками (здесь а, Ь н с).

Другие символы должны совпадать сами с собой. Например, ЯпЫ(з, 'пате: "~ возвращает указатель на первое вхождение пате: в строку з ЯпП ~з, '(пМ]ате: ') возвращает указатель на первое вхождение в строку и либо пате: либо Мате:; афпг((з, "1пМ1ате (*~') возвращает указатель на первое вхождение в строку з Мате и пи пате с послелующими (возможно, пустыми) символьными последовательностями в скобках.

8. (*2.5) Каких операций, вы считаете, не хватает среди функций, работающих с простыми регулярнзями выражениями из 9 20.6(71? Определите их н добавьте. Сравните выразительность ваших функций для поиска регулярных выражений с широко распространенными. Сравните скорость работы ваших средств с распространеннымн. 9. ('2.5) Воспользуйтесь библиотекой регулярных выражений для реализации операций поиска по образцу над классом 8Ьтпп; имеющим ассоцинрованньш класс ЯибзЫпй. 10. (*2.5) Подумайте, как написать «идеальный» класс для универсальной обработки текстов.

Назовите его Техй Какими возможностями он должен обладать? Какие ограничения на реализацию и какие затраты вызовут ваши «ндеальные» срелства? 670 Глава 20, Строки 11. ("1.5) Определи~с набор перегруженных версий для п1рйа 0, Ьс(1дЫ () и т. и., так чтобы эти функции правильно работали с сйаг, ипзщлес(сйаг н юдпег1 ела г.

12. (*2.5) Напишите класс ЯПпд, оптимизированный для строк не более чем из восьми символов. Сравните его быстродействие со ИНпд из в 11.12 и вашей версии, реализующей стандартную библиотечную з1ппд. Можно ли создать строку, сочетающую преимущества строк, оптимизированных для очень малой длины, с преимуществами совершенно универсальных строк? 13. (*2) Оцените скорость копирования строк з1пщ Значительно ли оптимизирует копирование ваша реализация строк? 14. (*2.5) Сравните бзястродействие трех функций сотр1еГе пате 0 из в 20.3.9 н в 20.3.10. Попытайтесь написать версию сотр1е1е лате (), работающую с максимальной скоростью.

Ведите запись ошибок, выявленных во время реализации и проверки. 15. (*2.5) Представьте себе, что считывание строк средней длины (в большинстве своем от 5 до 25 символов) из потока с(п — самое узкое нес~о в вашей системе. Напишите функцию ввода, читающую такие строки с максимальнои скоростью (насколько сумеете придумать).

Вы можете выбрать интерфейс к атой функции, чтобы оптимизировать быстродействие, а не удобство. Сравните результат с вашей реализацией для строк е1гтй. 1б. ("1.5) Напишите функцию Иоз ((п1), которая возвращала бы строковое представление своего целочисленного аргумента. Потоки 'То, что вы видите, — это вге, что вы получите.. — Брайан Керниган Ввод и вывод — потоки ов1геат — вывод встроенных типов — вывод типов, определяемых пользователем — виртуальные функции вывода — потоки ге1геат — ввод встроенных типов — неформатированный ввод — состояние потока — ввод типов, определяемых пользователем — исключения ввода/вывода — связывание потоков — часовые — форматированный вывод целых и чисел с плавающей точкой — поля и выравнивания — манипуляторы— стандартные манипуляторы — манипуляторы, определяемые пользователем— файловые потоки — закрытие потоков — строковые потоки — строковые буферы — буферы потоков — национальные особенности — функции обратного вызова для потоков — рггу ~) — советы — упражнения.

21.1. Введение Проектирование и реализация средств универсального ввода/вывода для языка программирования представляет значительную трудность. Традиционно средства ввода/вывода проектировались исключительно для работы с несколькими встроенными типами ланных. Однако нетривиальные программы на С++ пользуются множеством типов. определяемых пользователем, и для этих типов нужно осуществлять ввод, вывод. Средства ввода/вывода должны быть просты, удобны н безопасны в использовании, эффективны и гибки, и, самое главное, полны.

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

И гштому имеет смысл потребовать, чтобы средства ввода/вывола для С++ реалиэовывалпсь на С++ с использованием только тех возможностей, которые доступны каждому программисту. Представленные здесь средства для работы с потоками ввода/вывода являются следствием попытки справиться с этой задачей: 5 21.2 Вывод: То, что разработчик прикладных программ считает выводом, на самом деле является преобразованием объектов некоторого типа, такого как шб спаг" и Етр1оуее гесогд, в последовательность символов. Здесь 672 Глава 21.

Потоки описывается воэможность записи на вывод встроенных типов и типов, определяемых пользователем. э 21.3 Ввод: Здесь представлены средства для запроса на ввод символов, строк и значений других встроенных типов и типов, определяемых пользователем. Э 21.4 Форматирование: На расположение выводимой информации часто накладываются специальные требования.

Например, может возникнуть необходимость вывести число 1л1 в десятичном виде, а указатель в шестнадцатеричном, или числа с плавающей точкой должны быть записаны со строго определеьгной степенью точности. Здесь обсуждается управление форматированием и соответствующие приемы программирования. э 21.5 Файлы и потоки: По умолчанию каждая программа на С ь ь может пользоваться стандартными потоками, такими как стандартный вывод (еои1), стандартный ввод (с1л) и вывод ошибок (сепг).

Чтобы пользоваться другими устройствами и файлами, потоки должны создаваться и прикрепляться к этим устройствам и файлам. Здесь описываются механизмы открытия и закрытия файлов, а также прикрепления потоков к файлам и строкам Мгтлй. Э 21.6 Буферизация: Чтобы сделать ввод/вывод эффективным, мы должны воспользоваться стратегией буферизации, удобной как для записываемых (считываемых) данных, так и для приемника, куда они пишутся (или откуда читаются). Здесь представлены основные методы буферизации потоков. 4 21,7 Национальные особенности: Объект 1оеа1е описывает, как печатаются числа, какие символы считаются буквами и т. п.

Он инкапсулирует многие различия в культурных традициях. Национальные особенности используются системой ввода/вывода в неявном виде и описаны только вкратце. б 21.8 Ввод/вывод в плиле С: Рассматриваются функции рг(ля"'йиз библиотеки С <в1йо.й> и связи этой библиотеки с библиотекой С- ь к(ов1геат>. Для использования библиотеки це нужно знать методы, примененные при реализации библиотеки потоков. К тому же эти приемы в разных реализациях различаготся.

Характеристики

Тип файла
DJVU-файл
Размер
10,02 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6374
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее