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

специфичная проверка на конец файла - C++

Войти
Регистрация
Восстановить пароль
 
youmustknowme
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 15
11.05.2013, 21:33     специфичная проверка на конец файла #1
Дело в чем. Я считываю с файла 2 размерности , 2 матрицы и вектор. Потом надо провести проверку прочитан ли файл до конца( для того чтобы размерности не были меньше матриц). Вполне логичная проверка
C++
1
if (!fin.eof()) {//блабла}
работает не совсем корректно. Если после самого последнего элемента поставить пробел, то он отлавливает этот пробел. А ведь это не ошибка, так как вектор от него не изменился. я попробовал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fstream fin;
    fin.open("Input.txt");
int size1,size2,size3,size4;
fin>>size1;
        fin>>size2;
        fin>>size3;
        fin>>size4;
        Matrix A(size1, size2);
        Matrix B(size3, size4);
        Matrix b(size1,1);
        fin>>A;
        fin>>B;
        fin>>b;
        char ch;
        int g = 0;
while (!fin.eof()) 
{
            fin>>ch;
            if (ch!=' ') g++;}
if (g!=0) {cout<<"все очень плохо"<<endl; goto l;}
Но теперь прога не может считать этот долбаный пробел. Т.е. вылетает с ошибкой. Что не так?
заранее спасибо.
p.s. Матрицы реализованы через класс. Класс рабочий.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2013, 21:33     специфичная проверка на конец файла
Посмотрите здесь:

Запись в конец файла C++
C++ конец файла
Обойти конец файла. C++
Конец файла C++
Конец файла, но не совсем C++
C++ Проверка конец файла или нет
C++ Записать в конец файла
C++ Конец файла
C++ конец файла C++
C++ Запись в конец файла
C++ Зацикливание и конец файла
Ifstream проверка на конец файла C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SummerRain
 Аватар для SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
11.05.2013, 21:46     специфичная проверка на конец файла #2
попробуй так
C++
1
2
char ch;
while((ch = fin.get()) != EOF)
youmustknowme
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 15
11.05.2013, 22:13  [ТС]     специфичная проверка на конец файла #3
тоже не то видимо( или я дурак. Можете поподробней?

Добавлено через 11 минут
вот такая штука проверяет следующий символ на пробел.
C++
1
2
3
4
5
    if (!fin.eof()) {
        ch2 = fin.get();
        if (ch2!=' ') g++;
    }
    if (g!=0) {cout<<"o4en' ploho"<<endl; goto l;}
т.е. видимо проблема с этим злополучным fin.eof(). если заменить первый if на while то сразу ошибка.
SummerRain
 Аватар для SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
11.05.2013, 22:54     специфичная проверка на конец файла #4
Чтобы получить значение EOF. Нужно прочитать (точнее попытаться прочитать) символ, следующий за последним.
В этом отличие в условиях цикла while в моём и в твоём варианте.
Yandex
Объявления
11.05.2013, 22:54     специфичная проверка на конец файла
Ответ Создать тему
Опции темы

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