Форум программистов, компьютерный форум CyberForum.ru

Чем отличается fstream от ofstream? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как выделить память для класса http://www.cyberforum.ru/cpp-beginners/thread127980.html
Привет, я пишу библиотеку управления памятью. На данный момент я выделяю память вот так void * __cdecl MyAlloc(size_t size) { void * p=NULL; if( p= malloc(size))//проверяем может ли маллок выделить память { return p;//возвращаем указатель на начало выделенного фрагмента } if((p=malloc(size))==NULL) {
C++ Количество неодинаковых символов в строке Что-т не получается написать прогу...:\ #include <stdio.h> #include <conio.h> #include <string.h> int main () { int kolvo=0; int j; char buff; http://www.cyberforum.ru/cpp-beginners/thread127978.html
C++ Ошибка компилятора при выводе string
Stock::Stock(const char * co, int n, double pr) { cout<<"Вызван конструктор для: "<< co << "!\n"; company = co; if(n < 0) { cout<<"Количество пакетов не может быть отрицательным; для "<< company <<" установленно в 0.\n"; shares = 0; } else
C++ Код по си++, необходимо внести поправку
#include<stdio.h> #include<conio.h> #include<string.h> int Find_in_file(const char *filename, const char *str) { char s; FILE *file;
C++ Как исправить ошибки http://www.cyberforum.ru/cpp-beginners/thread127956.html
#include "stdafx.h" #include <iostream> #include <conio.h> #include <stdio.h> #include <string.h> using namespace std; #define STRLEN 100
C++ Файлы "Дан файл, содержащий сведения о книгах. Структура записи : фамилия и инициалы автора, название, издательство и год издания. Каждая запись заканчивается символом перевода строки (\n). Записи не упорядочены. Создать файл, содержащий записи указанной структуры в рабочем каталоге с именем, например, book.txt средствами любого редактора. Пример входного файла book.txt: Анисимов А.Н. Информатика ... подробнее

Показать сообщение отдельно
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.05.2010, 21:58     Чем отличается fstream от ofstream?
По порядку:

fstream - это класс. Как и ifstream и ofstream. Первый комбинирует в себе свойства двух последних. Они наследуют сви свойства от istream и ostream. То есть, работа с файлом происходит почти так же, как и работа с консолью - через operator>> и operator<< - это в текстовом режиме. То есть, создав объект класса fstream и передав конструктору параметры, можно начать работать с соответствующим файлом. Если он был открыт. Если нет - ничего не выйдет. Для проерки этого в классе fstream есть функция bool is_open() (или bool isopen(), уже не помню), которая возвращает 1 если файл открыт и 0, если нет доступа. В этом случае, если программа для Windows, с помощью GetLastError() можно получить код ошибки (поправьте меня если я не прав!!!).

Параметры конструктору:
указатель на char[] с именем файла,
и битовая маска флагов.

Флаги:
ios::in - ввод, ios::out - вывод с перезаписью, ios::binary - двоичный режим (иначе текстовый), ios::app - вывод с дописыванием в конец файла. Вроде все.

В двоичном режиме доступен произвольный доступ к файлу (то есть возможность переместиться в любой участок файла). В текстовом - только последовательный (фарш невозможно провернуть назад, мясо из котлет не восстановишь). Когда не нужен произвольный доступ, нет смысла с ним возиться.

Для навигации в двоичном режиме используется функция seekp(int, int) для вывода (put) и seekg(int, int) для ввода (get). Параметры:
Смещение относительно позиции
Сама позиция. Бывает трёх видов:

ios::begin - относительно начала файла, ios::cur - относительно текущей позиции, ios::end - относительно конца файла.

Чтобы выяснить текущую позицию, используется int tellp() для позиции вывода и tellg() - для позиции ввода.

После работы с файлом ОБЯЗАТЕЛЬНО ЕГО ЗАКРЫВАЙТЕ! Для этого есть функция close(). Так же, для открытия файла, помимо конструктора, есть функция open(char *, int).

В общем, так. Советую почитать соответствующие статьи.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru