Форум программистов, компьютерный форум 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++ Класс, реализующий стек Привет всем, Есть такая задача: Описать класс, реализующий стек. Написать программу, использующую этот класс для моделирования Т-образного сортировочного узла на железной дороге. Программа должна разделять на два направления состав, состоящий из вагонов двух типов (на каждое направление формируется состав из вагонов одного типа). Предусмотреть возможность формирования состава из файла и с... подробнее

Показать сообщение отдельно
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).

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