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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SaShka K
3 / 3 / 0
Регистрация: 16.01.2014
Сообщений: 55
#1

Варианты организации файлового В/В в C++ - C++

11.03.2014, 19:34. Просмотров 391. Ответов 7
Метки нет (Все метки)

Встретил несколько вариантов организации файлового В/В:
1) - через создание объектов классов ifstream и ofstream:
C++
1
2
std::ifstream fileIn("fileIn.txt", std::ios::in);    
std::ofstream fileOut("fileOut.txt", std::ios::out);
Тогда работать можно дальше как с потоками cin и cout (например):
C++
1
2
ch = fileIn.get();
fileOut << "Output this string. \n";
2) - через открытие файла функцией _sopen_s(), которая его идентификатор сохраняет в виде переменной типа int:
C++
1
2
3
4
err01 = _sopen_s(&arrFileOut2Int, "FileOut.txt", 
   _O_CREAT | _O_RDWR ,
   _SH_DENYNO ,
   _S_IREAD | _S_IWRITE );
Соответственно дальше работаю с ним немного иным образом (через этот int-идентификатор) (например):
C++
1
2
3
_lseek(arrFileOut2Int, 0, SEEK_END);
int errWrtInt=0;
errWrtInt= _write(arrFileOut2Int, &test01, sizeof(Test01));
3) - ещё встречал способ через объект библиотечного класса FILE (если я правильно понял), с этим вариантом пока не разбирался.

Вопрос: подскажите пожалуйста, зачем такое многообразие вариантов (только лишь для совместисости с С?) и каким способом из доступных следует работать с файлом? Если выделить один нельзя, то в каких случаях, следует использовать тот или иной метод?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 19:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Варианты организации файлового В/В в C++ (C++):

Написать все доступные варианты организации циклов (возврата программы к определённой строке кода) - C++
Здравствуйте! Напишите, пожалуйста, ВСЕ доступные (ну если их 3-5, если же много, то хотя бы 5, если не затруднит) варианты, с помощью...

Состояние файлового потока - C++
.... fostream log; .... class A { public: A (); }; A::A() {

Поток файлового ввода - C++
Что означает функция fin? #include &lt;iostream&gt; //cin и сout (потоковый ввод вывод) #include &lt;fstream&gt; //библиотека для работы...

Использование файлового типа данных - C++
Всем прив:) Дан файл F1, который содержит номера телефонов сотрудников учреждения: указываеться фамилия сотрудника, его инициалы и...

Передача файлового потока в функцию - C++
Здрасти. ifstream in(&quot;1.txt&quot;); что возвращает in? как передать этот поток (in) в функцию которая выводит символы? void...

Модификаторы файлового ввода в С++ как в С - C++
Всем доброго времени суток! Пусть в файле записано число в таком формате: (17) тогда в С я его могу считать так: FILE *file; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2464 / 1636 / 238
Регистрация: 24.11.2012
Сообщений: 4,031
11.03.2014, 19:36 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
std::fstream и производные - классы стандартной библиотеки С++.
_sopen_s - расширение от Майкрософта, а потому не является переносимым.
fopen и прочие - сишное наследие.

Исходя из этого решайте сами. Если пишете плюсовый код, то предпочтителен первый вариант.
1
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
11.03.2014, 19:37 #3
Когда как.
Не всегда данные методы совместимы с условием той или иной функции
и я использую:
ifstream input; // к примеру так
ofstream output; //
и за одно FILE* file;
file = fopen("filename", "flag");
1
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
11.03.2014, 19:41 #4
Цитата Сообщение от SaShka K Посмотреть сообщение
каким способом из доступных следует работать с файлом
Удобным и приемлемым для данного конкретного случая. Си функции быстрее потоков, но мне лично ближе потоки, хотя это спорно: я записывал и считывал через них бинарно файлы в несколько Гб и в принципе скорость устраивала... А так на вкус и цвет товарищей нет...

Добавлено через 2 минуты
Цитата Сообщение от Esecman Посмотреть сообщение
и за одно FILE* file;

Не по теме:

А за одно и CreateFile

1
0x10
11.03.2014, 19:42
  #5

Не по теме:

Цитата Сообщение от mustimur Посмотреть сообщение
А за одно и CreateFile
Ну и open тогда уж, как про него забыть http://linux.die.net/man/2/open

0
mustimur
11.03.2014, 19:43
  #6

Не по теме:

0x10, с меня угощаю

0
SaShka K
3 / 3 / 0
Регистрация: 16.01.2014
Сообщений: 55
11.03.2014, 19:53  [ТС] #7
Цитата Сообщение от Esecman Посмотреть сообщение
и я использую:
ifstream input; // ...
ofstream output; // ...
Тут `input` и `output` это ключевые слова? (что-то не нахожу на msdn)
0
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
11.03.2014, 19:58 #8
Цитата Сообщение от SaShka K Посмотреть сообщение
Тут `input` и `output` это ключевые слова?
нет, можешь заменить
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2014, 19:58
Привет! Вот еще темы с ответами:

Локализация Файлового ввода вывода - C++
Добрый день. Столкнулся с некоторой проблемой. с помощью setlocale(LC_ALL,&quot;Rus&quot;) Ввод с клавиатуры и вывод на экран работает...

Совте о создании файлового менеджера - C++
Мне нужно написать файловый менеджер с удобным интерфейсом.Какие библиотеки и функции мне нужно использовать в своей программе.Направьте...

Переделать из файлового вывода в консольный - C++
Помогите пожалуйста! У меня есть задача готовая, но там файловый ввод-вывод. Но мне очень нужно переделать все это в обычный вид, через...

Перегрузка файлового ввода-вывода - C++
Здравствуйте! У меня вопрос такой вот: для файлового ввода-вывода сколько надо функций перегружать? столько хватит friend...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.03.2014, 19:58
Ответ Создать тему
Опции темы

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