Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2016, 12:54   #1
NickTaylor19
 
Регистрация: 17.04.2016
Сообщений: 5
По умолчанию Файловый поток С++

Добрый день. Есть кусок кода в C++:
while (!fin.eof())
{
unsigned char ch = (unsigned char)fin.get();
// ...
}
Как видно, я создал fin типа ifstream. Так вот вопрос: если у меня есть символ 'я' (0xff) и есть EOF в конце файла (0xff), как сказать транслятору, что в конце стоит именно EOF, а не "я"? В цикле желательно break не использовать.
Заранее, спасибо.
NickTaylor19 вне форума Ответить с цитированием
Старый 17.04.2016, 12:56   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Код:
unsigned char ch(0);
while (!fin.eof() && (ch=fin.get())!='я' ) //0xff
Croessmah вне форума Ответить с цитированием
Старый 17.04.2016, 12:58   #3
NickTaylor19
 
Регистрация: 17.04.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Код:
unsigned char ch(0);
while (!fin.eof() && (ch=fin.get())!='я' ) //0xff
А если у меня будет в файле символ "я"?
NickTaylor19 вне форума Ответить с цитированием
Старый 17.04.2016, 22:19   #4
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Че-т я немного не так вопрос понял.
Цитата:
как сказать транслятору
какому транслятору?
Цитата:
что в конце стоит именно EOF, а не "я"?
фактически - eof это уже за файлом, так что чтение зафейлится.
Код:
while(ch = in.get(), !in.eof())//читаем и если после чтения флаг eof выставлен - значит конец
//Конечно, обработать ошибки тоже не помешает
Croessmah вне форума Ответить с цитированием
Старый 17.04.2016, 22:33   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Кроме всего уже сказанного, значение EOF не есть 0xFF a -1.
Перечитайте что именно возвращает get()
waleri вне форума Ответить с цитированием
Старый 18.04.2016, 15:02   #6
NickTaylor19
 
Регистрация: 17.04.2016
Сообщений: 5
По умолчанию

Спасибо, ребята
NickTaylor19 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файловый поток С++ Juli_aa Visual C++ 2 16.10.2011 15:42
запись динамического массива в файловый поток Jor1k Общие вопросы Delphi 8 30.10.2010 01:49
файловый поток. Открыть\создать бинарник Darth.Vader Общие вопросы C/C++ 16 29.12.2009 22:04
OpenDialog и файловый поток. (*_*) Общие вопросы C/C++ 1 03.06.2009 22:44