C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 48 - Файловый ввод-вывод. Продолжение / С++ Builder 5 / Borland C++

Шаг 48 - Файловый ввод-вывод. Продолжение.

Теперь перейдем к Станадартной Библиотеке Шаблонов. Там есть кое-какие классы, обеспечивающие i/o в стиле ООП. Напомню, для того, чтобы эти классы использовать, нужну включить <fstream> и дать директиву using namespace std. Правда, оговорюсь, что этот fstream - не единственный fstream (не очень хорошо звучит, но все равно :)). Есть еще <fstream.h>. Последний - стандартный поточный файл C++. Отличается он от STL класса не то чтобы очень сильно, но все-таки STL'овский посовременней будет. Все-таки рассмотрим fstream.

fstream

Инкапсулирует стандартный ввод-вывод. Я не буду рассматривать расширения этого класса под UNIX, ведь все равно программируем под Windows. Эти самые расширения касаются в основном прав доступа, по умолчанию 666 - allow all. В общем техника работы с этим классом такова. Сначала создается экземпляр, конструктором , первым параметром которого является имя файла, а вторым - режимы открытия файла. Как класс, произведенный от iostream, он инкапсулирует операторы включения и исключения "<<" и ">>". В общем-то с помощью них и производится работа с файлом. Режимы открытия класса - константы ios_base, имеют следующие значения:

  • ios_base::in
    Открытие для чтения.
  • ios_base::out
    Открытие для записи.
  • ios_base::app
    Автоматически переставляет указатель текущего символа потока в конец.
  • ios_base::binary
    Открытие файла в бинарном режиме.
  • ios_base::trunc
    Усекает поток после открытия.

Эти варианты сочетаются бинарным or, например ios_base::in|ios_base::out. Последнее открывает двух сторонний поток для ввода и вывода.

Думаю, глубоко уходить в дебри этого класса мы не будем, приведу пример его использования:

#pragma hdrstop
#include <fstream>
#include <conio.h>
#include <string.h>
using namespace std;
#define nl '\n'
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
fstream str("c:\\test.txt",ios_base::in|ios_base::out|ios_base::trunc);
for(int i=0;i<5;i++)
{
char s[100];
cin>>s;
str<<s<<'\n';
};
str.seekp(0);
while(!str.eof())
{
char s[100];
str.getline(s,100,'\n');
cout<<s<<'\n';
};
getch();
str.close();
return 0;
}

Вот так.

ifstream, ofstream

Не являются предками fstream, как можно было предположить, а являются производными basic_istream и basic_ostream. В общем-то разница небольшая, поскольку fstream является производным iostream, инкапсулирующего оба последних класса. По большом счету все значимые события эти классы унаследовали от базовых.

Эти классы предназначены только для ввода и вывода соотвественно. Это в некоторой степени ограничивает их возможности, но никто вроде бы не жаловался :).


| |
Автор Аванесов Самвел.
[AD]