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

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

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

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

11.03.2014, 19:34. Просмотров 358. Ответов 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 (если я правильно понял), с этим вариантом пока не разбирался.

Вопрос: подскажите пожалуйста, зачем такое многообразие вариантов (только лишь для совместисости с С?) и каким способом из доступных следует работать с файлом? Если выделить один нельзя, то в каких случаях, следует использовать тот или иной метод?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 19:34     Варианты организации файлового В/В в C++
Посмотрите здесь:
Написать все доступные варианты организации циклов (возврата программы к определённой строке кода) C++
C++ Поток файлового ввода
C++ Использование файлового типа данных
C++ Модификаторы файлового ввода в С++ как в С
Передача файлового потока в функцию C++
Локализация Файлового ввода вывода C++
Переделать из файлового вывода в консольный C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
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++ Возможные виды файлового ввода\вывода в С++
Переключение файлового потока ввода вывода 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++
Ответ Создать тему
Опции темы

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