Бьерн Страуструп.
Язык программирования С++
282
4. (*1.5) Напишите программу, которая печатает: (1)
строчные буквы, (2) все буквы, (3) все буквы и
цифры, (4) все символы, входящие в идентификатор в вашей версии С++, (5) все знаки пунктуации,
(6) целые значения всех управляющих символов, (7) все обобщенные пробелы, (8) целые значения
всех обобщенных пробелов, и, наконец, (9) все изображаемые символы.
5. (*4) Реализуйте стандартную библиотеку ввода-вывода С (
) с помощью стандартной
библиотеки ввода-вывода С++ ().
6. (*4)
Реализуйте стандартную библиотеку ввода-вывода С++ () с помощью стандартной
библиотеки ввода-вывода С ().
7. (*4)
Реализуйте библиотеки С и С++ так, чтобы их можно было использовать одновременно.
8. (*2)
Реализуйте класс, для которого операция [] перегружена так, чтобы обеспечить произвольное
чтение символов из файла.
9. (*3)
Повторите упражнение 8, но добейтесь, чтобы операция [] была применима для чтения и для
записи. Подсказка: пусть [] возвращает объект "дескриптор типа", для которого присваивание
означает: присвоить через дескриптор файлу, а неявное приведение к типу char означает чтение
файла по дескриптору.
10. (*2) Повторите упражнение 9, позволяя операции [] индексировать объекты произвольных типов, а
не только символы.
11. (*3.5) Продумайте и реализуйте операцию форматного ввода. Используйте для задания формата
строку спецификаций как в printf(). Должна быть возможность попыток применения нескольких
спецификаций для одного ввода, чтобы найти требуемый формат. Класс форматного ввода должен
быть производным класса istream.
12. (*4) Придумайте (и реализуйте) лучшие форматы ввода.
13. (**2) Определите для вывода манипулятор based с двумя параметрами: система счисления и целое
значение, и печатайте целое в представлении, определяемом системой счисления. Например,
based(2,9) напечатает 1001.
14. (**2) Напишите "миниатюрную" систему ввода-вывода, которая реализует классы istream, ostream,
ifstream, ofstream и предоставляет функции, такие как operator<<() и operator>>() для целых, и
операции, такие как open() и close() для файлов. Используйте исключительные ситуации, а не
переменные состояния, для сообщения об ошибках.
15. (**2) Напишите манипулятор, который включает и отключает эхо символа.
Бьерн Страуструп.
Язык программирования С++
283
Достарыңызбен бөлісу: