class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

основы С++

STL

реализация STL
обзор
строки
потоки ввода/вывода
Форматирование ввода/вывода
Функции и методы потоков
Файловые потоки
класс vector
очередь
стек
отображения
итераторы
функциональные объекты
алгоритмы (1)
алгоритмы (2)
класс valarray

Справочник по C++ STL

Файловые потоки

Включаемый файл:

#include<fstream>

Файловые потоки реализованы следующими классами:


// файловые потоки ввода
typedef basic_ifstream<char>    ifstream;
typedef basic_ifstream<wchar_t> wifstream;

// файловые потоки вывода
typedef basic_ofstream<char>    ofstream;
typedef basic_ofstream<wchar_t> wofstream;

// файловые потоки ввода/вывода
// наследники от предыдущих
typedef basic_fstream<char>    fstream;
typedef basic_fstream<wchar_t> wfstream;

методы файловых потоков

Конструктор файлового потока может заменить метод open. Значения режима открытия файла задаются вложенным типом open_mode:


typedef int openmode; // режим открытия потока
enum open_mode { 
 app     = 0x01, // всегда писать в конец файла
 binary  = 0x02, // ввод/вывод в двоичном режиме
 in      = 0x04, // открыть для ввода
 out     = 0x08, // открыть для вывода
 trunc   = 0x10, // уничтожить данные после открытия существующего потока
 ate     = 0x20  // открыть позиционируя указатель на конец файла
};

текстовой и двоичный режим

В двоичном режиме при операциях ввода/вывода особые символы не заменяются (типа конца строки), что позволяет правильно обработать двоичные файлы (например, файлы *.bmp). При этом для чтения данных используется метод read, а для записи метод write.

По умолчанию потоки открываются в текстовом режиме и в зависимости от типа потока для ввода, вывода или ввода/вывода. Так в вызове ofstream fout("out.txt",ios_base::out|ios_base::app); ios_base::out| можно опустить.

пример


// чтение элемента с текущей позиции потока
template<class T>
inline void read_el(ifstream&fin, T el)
{fin.read((char*)&el,sizeof(el));}

// запись элемента в текущую позицию потока
template<class T>
inline void write_el(ofstream&fout, T el)
{fout.write((const char*)&el),sizeof(el));}

//===========================================
/****************************
Вводим имя файла, затем
выводим его размер.
Для завершения необходимо ввести
некорректное имя файла.
****************************/
#include <iostream>
#include <fstream>
using namespace std;

int main(){
char buf[100];
ifstream fin;

cout << "for close program input incorrect file name\\n";

while(1){
  cout<<"input file name: ";
  cin>>buf;
  fin.open(buf,ios_base::binary);

  if(!fin.is_open()) {
    cout<<"file not exist";
    break;
    }

  fin.seekg(0,ios_base::end);
  cout<<"file size is "<<fin.tellg()
      <<" bytes"<<endl;
  fin.close();
}

return 0;
}

Рейтинг@Mail.ru