![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
BlHol |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
День добрый!
Коротенькая программка:
Так вот, binary файл не открывается, если его заранее не создать. Почему? Вопрос возник потому, что в случае с открытием текстового файла:
проблем не возникает, даже если такого файла не существует. Помогите, пожалуйста. Заранее спасибо. С уважением. |
||||
|
|||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
BlHol, Ну так у тебя он открывается на чтение, а не на запись в первом случае.
Так должно быть
|
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
потомучто он открывается на вывод, вот он тебе и создается! а в первом случае ты открываешь на ввод, а зачем создавать файл когда ты хочешь что-то читать? что ты будешь читать из вновь созданного файла?? |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Ты пытаешься открыть файл на чтение (in), с чего бы ему создаваться? А текстовый файл ты создаешь как выходной: ofstream. Если тебе нужно только выводить информацию, оставь ofstream:
-------------------- ... |
|||
|
||||
BlHol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Граждане, дико извиняюсь. При копировании кода потерял один кусочек. Строка выглядела так:
Т.е. файл создается и на вход и на выход. (В книжке написано "с произвольной выборкой") А fbin, все равно, 0. Еще раз прошу прощения. Но что делать-то? Заранее спасибо. |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
По-моему обойти ограничение можно будет либо очистив флаги сразу же после создания файла - fbin.clear(), либо открыв файл так:
Но тогда любая белеберда будет открываться ... Это сообщение отредактировал(а) Xenon - 6.4.2007, 15:49 |
|||
|
||||
BlHol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
И еще, что интересно, когда закомментарил /*ios::in*/, все заработало нормально. Почему?
|
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
BlHol, Похоже что такая конструкция рассчитана на уже созданый файл (я имею ввиду ввод/вывод). При открытии файла на вывод он всегда создается, исключая ситуации когда это совершенно невозможно, либо установлены nocreate, или noreplace
Это сообщение отредактировал(а) Xenon - 6.4.2007, 15:58 |
|||
|
||||
BlHol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Спасибо.
Жду еще советов. Заранее спасибо. |
|||
|
||||
apook |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
если Buildere то есть
а если Turbo C++
-------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
||||
|
|||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
apook,
А как nocreate поможет избавиться от проблемы? |
|||
|
||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Я подумал что проблема решена и товарищ BlHol хочет еще любой инфформации по этой теме ![]() -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
BlHol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
Естественно, хочет
![]() Проблема почти решена. Просто, пример из книжки не работает как нужно. Пришлось выкинуть ios::in, тогда файл создается. Если не выкидывать, то тогда нужно, чтобы файл уже был. Просто, в книжке пишут, что конструкция fstream fbin(filename, ios::binary | ios::in | ios::out); пригодна и для записи и для чтения в (из) двоичный файл. Вот я и хочу понять, то ли в книге опечатка, то ли я где-то ошибаюсь. |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
BlHol, Все правильно, просто файл уже должен быть создан. При чем следует не забывать, что после записи перед чтением (и наоборот) необходимо сбрасывать биты состояния - fbin.clear();
PS. Книжка не Лафоре случайно? Это сообщение отредактировал(а) Xenon - 6.4.2007, 17:34 |
|||
|
||||
BlHol |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 26.11.2005 Репутация: нет Всего: нет |
1. Вот меня и интересует. Почему, в случае с тектовым файлом он создается, а, в случае с binary нет. В том ли причина, что при записи в текстовый файл, я прямо указываю ofstream? И что, значит в книге опечатка и нужно в
2. Книжка Оверленда, называется "С++ без страха". С уважением. |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |