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

Подскажите условие - C++

Восстановить пароль Регистрация
 
dima_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 23
17.09.2012, 00:12     Подскажите условие #1
Не знаю какое должно быть условие, для проверки файла на пустоту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if(comand=="4")
            {
                cout<<"ЧТЕНИЕ ИЗ ФАЙЛА"<<endl;
                ifstream f;
                f.open("avto.txt");
                if(!f)
                {
                    cout<<"Невозможно открыть файл.";
                }
                if(f=="     ")     //ВОТ ЗДЕСЬ
                { 
                    cout<<"Файл пуст"<<endl;
                }
                else
                {
                st.out_file();// вывод из файла
                }
            }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2012, 00:12     Подскажите условие
Посмотрите здесь:

C++ Подскажите что не правильно чему оно не так выводит и по возможности исправьте ошибки вот условие и код программы
C++ Условие
C++ Составить программу, которая выводит на экран слово «ИСТИНА», если условие выполнено или слово «ЛОЖЬ», если условие не выполнено.
Как сделать так, чтобы условие начало работать?Подскажите,пожалуйста C++
Подскажите как записать условие C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.09.2012, 00:23     Подскажите условие #2
Попробовать чего-нибудь считать из файла, а потом проверить на eof. Что-то вроде
C++
1
2
3
if (f.peek(), f.eof()) {
  // файл пустой
}
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
17.09.2012, 00:27     Подскажите условие #3
Разве этого не достаточно?
C++
1
if(f.eof())
dima_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 23
17.09.2012, 00:29  [ТС]     Подскажите условие #4
~OhMyGodSoLong~, Вроде работает, спасибо, но еще интересно знать о peek() и eof()
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.09.2012, 00:32     Подскажите условие #5
Просто флаг EOF не устанавливается сам по себе, он устанавливается постфактум после какой-то операции чтения из файла. Поэтому делается peek() — она читает символ из файла, но оставляет его в потоке (то есть не сдвигает указатель, если там что-то действительно было, чтобы этот символ можно было потом в следующий раз прочитать нормально). Соответственно, если файл пустой, то она ничего не считает, но установит бит EOF, на который и среагирует следующий за ней вызов eof().
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.09.2012, 02:15     Подскажите условие #6
~OhMyGodSoLong~, для начинающих, наверное, можно проще записать (без запятой):
C++
1
2
3
if (f.peek() == EOF) {
  // файл пустой
}
kotleta
 Аватар для kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
17.09.2012, 09:44     Подскажите условие #7
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
char c=0;
ifstream f("file");

f.get();
f.get();

if (f.eof() == true) cout << "end";

return 0;
}

Добавлено через 5 минут
alsav22, ваш вариант у меня почему-то не работает


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    char c=0;
    ifstream f("file");
 
    f.get();
 
    if (f.peek() == EOF)
    {
      cout << "empty";
    }
 
    return 0;
}
Вот работает похоже у меня в строке еще какой-то символ есть, наверное перевода строки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2012, 10:39     Подскажите условие
Еще ссылки по теме:

C++ Подскажите какое условие, чтобы с трёхзначного числа считывалась вторая цифра?
Добрый день. Подскажите, возможно ли в system задать условие? C++
Подскажите, какое условие нужно поставить C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.09.2012, 10:39     Подскажите условие #8
Вы пустой файл как делаете?

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    
    fstream f("file", ios::out);
    f.close();
    f.open("file", ios::in);
    
    if (f.peek() == EOF)
    {
      cout << "empty";
    }
    f.close();
    
    cout << endl;
    system("pause");
    return 0;
}
Добавлено через 14 минут
Проверка на пустоту, если файл просто откывается для чтения и в других случаях имеет свои особенности. Если для цели из первого поста, то мой способ вполне рабочий. В 7 посте, вы уже используете метод get(). Для каких целей вы get() делаете?
Yandex
Объявления
17.09.2012, 10:39     Подскажите условие
Ответ Создать тему
Опции темы

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