Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Ishodniki.Ru » Online книги » C++ Builder по шагам Шаг 48 - Файловый ввод-вывод. Продолжение. Теперь перейдем к Станадартной Библиотеке Шаблонов. Там есть кое-какие классы, обеспечивающие i/o в стиле ООП. Напомню, для того, чтобы эти классы использовать, нужну включить <fstream> и дать директиву using namespace std. Правда, оговорюсь, что этот fstream - не единственный fstream (не очень хорошо звучит, но все равно :)). Есть еще <fstream.h>. Последний - стандартный поточный файл C++. Отличается он от STL класса не то чтобы очень сильно, но все-таки STL'овский посовременней будет. Все-таки рассмотрим fstream. fstreamИнкапсулирует стандартный ввод-вывод. Я не буду рассматривать расширения этого класса под UNIX, ведь все равно программируем под Windows. Эти самые расширения касаются в основном прав доступа, по умолчанию 666 - allow all. В общем техника работы с этим классом такова. Сначала создается экземпляр, конструктором , первым параметром которого является имя файла, а вторым - режимы открытия файла. Как класс, произведенный от iostream, он инкапсулирует операторы включения и исключения "<<" и ">>". В общем-то с помощью них и производится работа с файлом. Режимы открытия класса - константы ios_base, имеют следующие значения:
Эти варианты сочетаются бинарным 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, инкапсулирующего оба последних класса. По большом счету все значимые события эти классы унаследовали от базовых. Эти классы предназначены только для ввода и вывода соотвественно. Это в некоторой степени ограничивает их возможности, но никто вроде бы не жаловался :). |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Рейтинги
|