
- •1. Основные этапы решения задач на эвм
- •Формулировка задачи
- •Математическая постановка задачи
- •Разработка алгоритма решения задачи
- •Написание текста программы на языке программирования
- •Ввод текста программы в эвм
- •Поиск и устранение синтаксических ошибок
- •Тестирование программы. Поиск и устранение логических ошибок в программе
- •Этапы создания исполняемой программы
- •Базовые компоненты программ
- •Буквы и цифры
- •Пробельные символы
- •Знаки пунктуации и специальные символы
- •Идентификаторы
- •Ключевые слова
- •Комментарии
- •Лексемы
- •Типы данных
- •Целые константы
- •Константы с плавающей точкой
- •Константа-символ
- •Строковые литералы
- •Универсальные функции ввода и вывода любых типов данных
- •Структуры и форма написания программы
- •Программирование разветвляющихся вычислительных процессов
- •Цикл while – цикл с предусловием.
- •Цикл do while – цикл с постусловием
- •Цикл for
- •Безусловная передача управления внутри цикла
- •Описание некоторых стандартов алгоритмов
- •Работа с файлами (функции ввода вывода верхнего уровня)
- •Указатели
- •Одномерные массивы Объявление массива.
- •Стандартные функции обработки строк
- •Многомерные массивы на примере двумерных
- •Классы памяти
- •Способы передачи данных в функцию
- •Функции и строки
- •Функции и одномерные числовые массивы
- •Функции и двумерные массивы
- •Функции с параметрами по умолчанию
- •Перегрузка функции
- •Шаблоны функции
- •Типы данных, определяемые пользователем
- •4.1. Структуры
- •Шаблон структуры
- •Структурные переменные
- •Инициализация структуры
- •Доступ к полям структуры
- •Массив структур
- •Вложенные структуры
- •Битовые поля структур
- •Передача структуры в функцию
- •Двоичный ввод-вывод структур
- •Функции двоичного ввода-вывода
- •Динамические структуры данных
- •4.2. Объединения
- •4.3. Перечисления
- •Файловые операции ввода/вывода
- •Файловый ввод/вывод с прямым доступом
Файловый ввод/вывод с прямым доступом
Файловые операции ввода/вывода прямого доступа также используют
потоковые функции-элементы read и write, представленные в предыдущем
разделе. Stream-библиотека имеет ряд функций, позволяющих вам передвигать
указатель потока в любое необходимое положение. Функция-элемент seekg -
одна из таких функций.
Функция-элемент seekg
Прототип для перегруженной функции-компонента seekg:
istream& seekg(long pos);
istream& seekg(long offset, seek_dir dir);
Параметр pos в первой версии определяет абсолютное положение байта в
потоке. Во второй версии параметр offset определяет относительное смещение,
в зависимости от аргумента dir. Аргументы для последнего параметра:
ios::beg С начала файла
ios::cur С текущей позиции файла
ios::end С конца файла
Пример
const BLOCK SIZE = 80
char buff[BLOCK_SIZE] = "Hello World!";
f.open("CALC.DAT", ios::in | ios::out | ios::binary);
f.seekg(3 * BLOCK_SIZE); // продвинутся к блоку 4
f.read((const unsigned char*)buff, BLOCK_SIZE);
cout < buff < endl;
fclose ();
Заключение
Сегодняшний урок представил краткое введение в библиотеку ввода/вывода
C++ и вынес на обсуждение следующие вопросы:
- Общие функции ввода/вывода, включая open, close, good, fail и
оператор !.
- Функция open открывает файловый поток ввода/вывода и поддерживает
попеременный и множественный режимы ввода/вывода. Функция close
закрывает файловый поток. Функции good и fail индицируют успешную
или ошибочную, соответственно, потоковую операцию ввода/вывода.
- C++ позволяет выполнять последовательный потоковый ввод/вывод для
текста с использованием операций < и >, так же как и при помощи
потоковой функции getline. Операция < позволяет записать символы и
строки (а также и другие предопределенные типы данных). Операция >
применяется для - получения символов. Функция getline позволяет вашему приложению
считывать строки с клавиатуры или из текстового файла.
- Последовательный потоковый ввод/вывод двоичных данных использует
потоковые функции write или read для записи или считывания данных
из переменных любого типа.
- Потоковый ввод/вывод прямого доступа для двоичных данных использует
функцию seekg в объединении с функциями read и write. Функция seekg
позволяет вам передвигать потоковый указатель либо в абсолютное,
либо в относительное положение в потоке.