Пример использования потоков
Основные используемые функцииunsigned short chunk_id; //Идентификатор блока unsigned int chunk_len; //Смещение //Переменная типа файловый поток чтения, где ifs просто имя переменной ifstream ifs; //Открыть файл с именем fname, как бинарный для чтения и поставить файловый указатель в начало ifs.open(fname.c_str(), ios_base::in | ios_base::binary | ios_base::beg); ifs.is_open(); //Файл открыт? //Считать в переменную chunk_id 2 байта; //причем часть кода "(char*)&" является обязательной и преобразует адрес переменной в указатель на символ ifs.read((char*)&chunk_id,2); //Пропустить chunk_len-6 байт; перейти на chunk_len-6 байт вперед ifs.ignore(chunk_len-6); //Поставить файловый указатель на позицию ifs.tellg()-6 ifs.seekg(ifs.tellg()-6); //Получить текущую позицию файлового указателя ifs.tellg(); //Конец файла? ifs.eof(); Примечание. Вместо методов read и write можно использовать перегруженные операторы ">>" и "<<" соответственно Пример КодаЧтобы выполнить чтение или запись в текстовый файл, достаточно для открытого потока использовать операторы << и >>. Например, следующая программа записывает в файл с именем TEST целое число, значение с плавающей точкой и строку, а затем читает все, что было записано. #include <iostream.h>
#include <fstream.h>
int main()
{
ofstream out("test");
if(!out) {
cout << "He удается открыть файл.\n\";
return 1;
}
// Выводим данные.
out << 10 << " " << 123.23 << "\n";
out << "Это короткий текстовый файл.\n";
out.closet();
// Теперь читаем все, что было записано,
char ch;
int i;
float f;
char str [80];
ifstream in("test");
if(!in) {
cout << "He удается открыть файл.\n";
return 1;
}
in >> i ;
in >> f;
in >> ch;
in >> str;
cout << "Вот эти данные: ";
cout << i << " " << f <<" " << ch << "\n";
cout << str;
in.close();
return 0;
}
При чтении текстовых файлов с использованием оператора >> имейте в виду, что могут происходить преобразования некоторых символов. Например, пробельные символы опускаются. Чтобы не допустить ненужного преобразования символов, необходимо открыть файл для двоичных операций ввода-вывода и использовать двоичные функции ввода-вывода. |
Нет комментариев. Оставить комментарий: |