Классы файловых потоков :
ifstream - файл ввода, производный от istream
ofstream - файл вывода, производный от ostream
fstream - файл ввода-вывода, производный от iostream
Флаги режимов работы с файлом :
enum ios::open_mode
{
in = 0x01, // Открыть файл только для чтения
out = 0x02, // Открыть файл только для записи
ate = 0x04, // При открытии позиционироваться в конец файла
app = 0x08, // Открыть существующий для дополнения
trunc = 0x10, // Создание нового файла взамен существующего
nocreate=0x20, // Не создавать новый файл при его отсутствии
noreplace=0x40, // Не создавать новый файл, если он существует
binary= 0x80 // Двоичный файл ("прозрачный" ввод-вывод без
// преобразования символов конца строки)
};
Конструкторы объектов (для классов ifstream,ofstream,fstream) и функции открытия/закрытия файлов :
ifstream(); // Без открытия файлов
ifstream( // С открытием файла в заданном
char *name, // режиме imode
int imode=ios::in,
int prot=filebuf::openprot);
ifstream(int fd); // С присоединенем файла с дескрип-
// тором fd
ifstream( // То же, с явно заданным буфером
int fd,
char *buf, int sz);
void ifstream::open(
char *name, // Открытие файла в заданном режиме
int imode=ios::in,
int prot=filebuf::openprot);
void close(); // Закрыть файл
void setbuf(
char *p,int sz); // Установить буфер потока
int fd(); // Дескриптор открытого в потоке файла
int is_rtl_open(); // 1 - файл открыт в потоке
Унаследованные переопределения операторов позволяют проверять наличие ошибок в потоках в виде :
fstream ss;
if (ss) ... или if (!ss) ...
Функции ввода-вывода данных файловых потоков (унаследованы из istream,ostream и iostream) :
// Чтение указанного количества символов (байтов)
// из потока в буфер
istream& read( char *p, int n);
istream& read( signed char *p, int n);
istream& read( unsigned char *p, int n);
// Запись указанного количества символов (байтов)
// из буфера в поток
ostream& write( char *p, int n);