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

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

Восстановить пароль Регистрация
 
SaShka K
3 / 3 / 0
Регистрация: 16.01.2014
Сообщений: 55
11.03.2014, 19:34     Варианты организации файлового В/В в C++ #1
Встретил несколько вариантов организации файлового В/В:
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 (если я правильно понял), с этим вариантом пока не разбирался.

Вопрос: подскажите пожалуйста, зачем такое многообразие вариантов (только лишь для совместисости с С?) и каким способом из доступных следует работать с файлом? Если выделить один нельзя, то в каких случаях, следует использовать тот или иной метод?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.03.2014, 19:36     Варианты организации файлового В/В в C++ #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
std::fstream и производные - классы стандартной библиотеки С++.
_sopen_s - расширение от Майкрософта, а потому не является переносимым.
fopen и прочие - сишное наследие.

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

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

Не по теме:

А за одно и CreateFile

0x10
11.03.2014, 19:42
  #5

Не по теме:

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

mustimur
11.03.2014, 19:43
  #6

Не по теме:

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

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

Совте о создании файлового менеджера C++
Переделать из файлового вывода в консольный C++
C++ Поток файлового ввода

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

Или воспользуйтесь поиском по форуму:
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
11.03.2014, 19:58     Варианты организации файлового В/В в C++ #8
Цитата Сообщение от SaShka K Посмотреть сообщение
Тут `input` и `output` это ключевые слова?
нет, можешь заменить
Yandex
Объявления
11.03.2014, 19:58     Варианты организации файлового В/В в C++
Ответ Создать тему
Опции темы

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