Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
dima_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 23
#1

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

17.09.2012, 00:12. Просмотров 577. Ответов 7
Метки нет (Все метки)

Не знаю какое должно быть условие, для проверки файла на пустоту
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();// вывод из файла
                }
            }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2012, 00:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подскажите условие (C++):

Подскажите условие - C++
Доброго времени суток! Встретил такое условие в программе: for(;;){ // код }; return 0; Подскажите, что оно...

Подскажите как записать условие - C++
В матрице А(n*n) найти Сред.Арифметическое элементов последнего столбца и возвести полученное значение в квадрат. Нужно только условие с...

Подскажите, какое условие нужно поставить - C++
Вот значит задача: Текст, не содержит собственных имен и сокращений, набран с использованием прописных и строчных русских букв....

Добрый день. Подскажите, возможно ли в system задать условие? - C++
Добрый день. Подскажите, возможно ли в system задать условие? Например чтобы если a=1 записывал одно, а если a=2 записывал другое. Заранее...

Как сделать так, чтобы условие начало работать?Подскажите,пожалуйста - C++
Здравствуйте. Прошу,подскажите,пожалуйста, ступор уже. Вот прога: for(n=1;n&lt;=100;n++) do { P0=1/(exp(r,n));...

Подскажите какое условие, чтобы с трёхзначного числа считывалась вторая цифра? - C++
например &quot;145&quot; в результате выдавалось &quot;4&quot;

7
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.09.2012, 00:23 #2
Попробовать чего-нибудь считать из файла, а потом проверить на eof. Что-то вроде
C++
1
2
3
if (f.peek(), f.eof()) {
  // файл пустой
}
1
DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 296
17.09.2012, 00:27 #3
Разве этого не достаточно?
C++
1
if(f.eof())
0
dima_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 23
17.09.2012, 00:29  [ТС] #4
~OhMyGodSoLong~, Вроде работает, спасибо, но еще интересно знать о peek() и eof()
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.09.2012, 00:32 #5
Просто флаг EOF не устанавливается сам по себе, он устанавливается постфактум после какой-то операции чтения из файла. Поэтому делается peek() — она читает символ из файла, но оставляет его в потоке (то есть не сдвигает указатель, если там что-то действительно было, чтобы этот символ можно было потом в следующий раз прочитать нормально). Соответственно, если файл пустой, то она ничего не считает, но установит бит EOF, на который и среагирует следующий за ней вызов eof().
2
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.09.2012, 02:15 #6
~OhMyGodSoLong~, для начинающих, наверное, можно проще записать (без запятой):
C++
1
2
3
if (f.peek() == EOF) {
  // файл пустой
}
0
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;
}
Вот работает похоже у меня в строке еще какой-то символ есть, наверное перевода строки.
0
alsav22
5426 / 4821 / 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() делаете?
0
17.09.2012, 10:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2012, 10:39
Привет! Вот еще темы с ответами:

Подскажите что не правильно чему оно не так выводит и по возможности исправьте ошибки вот условие и код программы - C++
Подскажите что не правильно чему оно не так выводит и по возможности исправьте ошибки вот условие и код программы: Проверить, есть ли во...

Составить программу, которая выводит на экран слово «ИСТИНА», если условие выполнено или слово «ЛОЖЬ», если условие не выполнено. - C++
Цифры данного трехзначного числа V являются членами арифметической прогрессии

подскажите что делать при вводимых данных 10 25 и 5 20 программа работает не правильно должна выводить 135 подскажите что делать - C++
Вывод В выходной файл выведите одно число - сколько ударов сделали часы за этот отрезок времени.

условие - C++
Ответ скорее всего прост,но не могу придумать никак #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; int fact(int...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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