
- •220300 - Системы автоматизированного проектирования
- •Состав языка и принцип работы компилятора языка высокого уровня
- •Идентификаторы
- •Альтернативный ввод-вывод в стиле с
- •Константы
- •Манипуляторы
- •Преобразования типов
- •Арифметические операции
- •Функции стандартной библиотеки
- •Операции отношения и логические операции
- •Базовые конструкции структурного программирования
- •Цикл с параметром (for)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Рекомендации по программированию циклов
- •Ветвления
- •Условный оператор if
- •Вложенные конструкции
- •Проблемы соответствия if и else во вложенных ветвлениях
- •Условная операция
- •Оператор switch
- •Операторы передачи управления
- •Контрольная работа
- •Массивы
- •Сортировка массива методом выбора
- •Сортировка массива методом пузырька
- •Многомерные массивы
- •Операции со строками
- •Функции
- •Void starline(); // объявление функции (прототип)
- •Передача аргументов в функцию по значению
- •Void charline(char sim, int n); // объявление функции (прототип)
- •Возвращение функцией значения
- •Передача аргументов по ссылке
- •Возвращение значения по ссылке
- •Перегруженные функции
- •Переменные и функции
- •Передача массивов в функции
- •Указатели
- •Указатели и массивы
- •Указатели и функции
- •Указатели и строки
- •Динамический массив и динамическое выделение памяти
- •Ввод/вывод
- •Форматированный ввод/вывод
- •Конструкторы и методы
- •Двоичный ввод/вывод. Бинарные файлы
- •Двунаправленный ввод/вывод
- •Функции стандартной библиотеки для работы с файлами или ввод/вывод в стиле с
Ввод/вывод
Ввод/вывод в С++ реализуется либо с помощью функций, унаследованных от библиотеки С, либо с помощью потоков С++. Каждый способ имеет свои преимущества, но смешивать их в одной программе не рекомендуется.
Потоки С++ и файлы
Поток – это абстрактное понятие, относящееся к любому переносу данных от источника к приёмнику. Потоки С++, в отличие от функций ввода/вывода в стиле С, обеспечивают надёжную работу как со стандартными, так и с определёнными программистом типами данных, а также единообразный и понятный синтаксис. Потоки активно используются в визуальном объектно-ориентированном программировании. На сегодняшний день, потоки С++ - это лучший способ записывать данные в файл, лучший способ организации данных в памяти для последующего использования при вводе/выводе данных не только в консольных программах, но и в визуальных элементах графического интерфейса пользователя (GUI).
Поток определяется как последовательность байтов и не зависит от конкретного устройства, с которым производится обмен (ОЗУ, файл на диске, клавиатура, консоль, принтер и т.д.). Обмен с потоком для увеличения скорости передачи данных производится, как правило, через специальную область оперативной памяти – буфер.
По направлению обмена потоки можно разделить на входные (данные вводятся в память), выходные (данные выводятся из памяти) и двунаправленные (допускающие как извлечение, так и включение). Иначе говоря, если движение данных направлено в программу, то такой поток называют входным потоком (input stream). Если движение данных направлено из программы, то такой поток называют выходным потоком (output stream). Эти потоки тесно связаны со стандартными потоками ввода/вывода ОС.
По виду устройств, с которыми работает поток, можно разделить потоки на стандартные, файловые и строковые. Стандартные потоки предназначены для передачи данных от клавиатуры и на экран, файловые потоки – для обмена информацией с файлами на внешних носителях данных, а строковые потоки – для работы с массивами символов в оперативной памяти.
Под файлом обычно подразумевается именованная информация на носителе данных, например, на жёстком или гибком магнитном диске. Логически файл можно представить как конечное количество последовательных байтов. По способу доступа файлы можно разделить на последовательные, чтение и запись в которых производятся с начала байт за байтом, и файлы с произвольным доступом, допускающие чтение и запись в указанную позицию.
Библиотека С++ предлагает три класса для работы с файлами: ifstream – класс входных файловых потоков; ofstream – класс выходных файловых потоков; fstream – класс двунаправленных файловых потоков. Эти классы объявлены в заголовочном файле fstream.h и поддерживают перегруженные операции << и >>, флаги форматирования, манипуляторы и т.п.
Использование файлов в программе предполагает следующие операции:
создание потока;
открытие потока и связывание его с файлом;
обмен данными (ввод/вывод);
уничтожение потока;
закрытие файла.
Потоковый ввод/вывод файлов можно разделить на форматированный и двоичный (бинарный).