- •2) Константы
- •13) Массивы-конечная совокупность данных одного типа
- •19) Сегмент данных для хранения констант
- •3.14159265 Позволяет использовать в программе имя p1 вместо константы 3.14159265. Обратите внимание, что
- •Void main()
- •32) Перечислимые типы
- •Void constr_list(dyn_list &l)
- •37) Объединения
- •Режимы открытия и их назначение
Режимы открытия и их назначение
Режим открытия |
Назначение |
ios::in |
Открыть файл для чтения |
ios::out |
Открыть файл для записи |
ios::ate |
Начало вывода устанавливается в конец файла |
ios::app |
Открыть файл для добавления в конец |
ios::trunc |
Усечь файл, то есть удалить его содержимое |
ios::binary |
Двоичный режим операций |
Режимы открытия файла представляют собой битовые маски, поэтому можно задавать два или более режима, объединяя их побитовой операцией ИЛИ. В следующем фрагменте кода файл открывается для вывода с помощью функции open():
ofstream ofs; ofs.open("FileName.dat");
Обратим внимание, что по умолчанию режим открытия файла соответствует типу файлового потока. У потока ввода или вывода флаг режима всегда установлен неявно. Например, для потока вывода в режиме добавления файла можно вместо оператора
ofstream ofs("FName.txt", ios::out | ios::app); написать ofstream ofs("FName.txt", ios::app);
Между режимами открытия файла ios::ate и ios::app имеется небольшая разница.
Если файл открывается в режиме добавления, весь вывод в файл будет осуществляться в позицию, начинающуюся с текущего конца файла, безотносительно к операциям позиционирования в файле. В режиме открытия ios::ate (от английского "at end") можно изменить позицию вывода в файл и осуществлять запись, начиная с нее. Для потоков вывода режим открытия эквивалентен ios::out | ios::trunc, то есть можно опустить режим усечения файла. Однако для потоков ввода-вывода его нужно указывать явно. Файлы, которые открываются для вывода, создаются, если они еще не существуют.
Если открытие файла завершилось неудачей, объект, соответствующий потоку, будет возвращать 0:
if (!ofs){ cout << "Файл не открыт\n";}
Проверить успешность открытия файла можно также с помощью функции-члена is_open(), имеющей следующий прототип:
int is_open() const;
Функция возвращает 1, если поток удалось связать с открытым файлом. Например,
if (!ofs.is_open()){ cout << "Файл не открыт\n"; return; }
Если при открытии файла не указан режим ios::binary, файл открывается в текстовом режиме и после того, как файл успешно открыт, для выполнения операций ввода-вывода можно использовать операторы извлечения и вставки в поток. Для проверки, достигнут ли конец файла, можно использовать функцию ios::eof(), имеющую прототип int eof();
Завершив операции ввода-вывода, необходимо закрыть файл, вызвав функцию-член close() с прототипом void close():
ofs.close();
Закрытие файла происходит автоматически при выходе потокового объекта из области существования, когда вызывается деструктор потока.
39)
40) long ftell (FILE *f);
ftell – возвращает текущее значение указателя позиции в файл, отсчитанное в байтах от его начала.
int fseek – возвращает 0, если удалось переместить указатель и не0, если ошибка.
int fseek (FILE *f, long offset
int origin);
offset – смещение в байтах
int origin – с какой позиции задавать смещение
Константы: SEEK_SET с начала
SEEK_CUR текущее положение
SEEK_END с конца
fseek (f, i * size of (struct Record), SEEK_SET);
41)
42) по Alan Kay: 1) в программе всё является объектом; 2) вычисления имеют вид взаимодействия объектов. Взаимодействия происходят за счёт посылки или получения сообщений. Сообщение – это запрос на действие (быть может с параметрами ).3) каждый объект имеет собственную область памяти. 4) каждый объект явл. представителем класса, выражающего общее свойство объектов. 5)поведение объекта определяется классом, т.е объекты 1 класса могут выполнять одинаковые действия . 6) классы образуют единую древовидную структуру с общим корнем (иерархия наследования). Память и поведение объекта класса доступны любому классу, расположенному ниже в иерархическом дереве.
