Проверка файла на пустоту С++

Решаю задачу на определение симметричности массива, ну или является ли полиндромом,иначе говоря. Если симметрична, то вывожу 1, иначе 0. В файле сначала вводится кол-во элементов массива,а потом только последовательность чисел.

Проблема в том, что никак не получается корректно проверить файл на пустоту. Если файл полностью пустой - вывести 0.

Я использовал и if(!(fin >> number)) fout << 0; и if(fin.tellg() == 0) и другие.
Но ответ в таком случае выводит неккоректно. Даже если ввел симметричную последовательность чисел в файл, выводит 0.

Посоветуйте что-то еще.

#include <iostream>
#include <fstream>
using namespace std;

bool symmetry(int array[], int begin, int end){
    {
        return (begin >= end) || ((array[begin] == array[end]) && (symmetry(array, begin + 1, end - 1)));
    }
    return 0;
}

int main(){
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int number, count = 0, size, a = 0;
        
    if(!(fin >> number)) {fout << 0; return 0;} //проверка на пустоту

    while(fin >> number){a++;}
    fin.clear();
    fin.seekg(0, ios::beg);
        
    fin >> number;
    size = number;
    int array[size];
    if (size == 0){fout << 0; return 0;}
    
    if(size <= (a-1)){
    for(int i = 0; i < size; i++) {fin >> number; array[count++] = number;}
    }
    else{
    for(int i = 0; i < a-1; i++) {fin >> number; array[count++] = number;}
    }
    
    for(int i = 0; i < count; i++){cout << array[i];}

    if(symmetry(array, 0, count-1) == true) fout<< 1;
    else fout<< 0;
    
    fin.close();
    fout.close();
    return 0;
}

Ответы (1 шт):

Автор решения: Stanley

Проверка на пустоту через if(!(fin >> number)) - это корректная проверка на пустоту. Но ошибка возникает совсем по другой причине: в цикле for(int i = 0; i < a-1; i++) {fin >> number; array[count++] = number;} должен фигурировать не i < a-1, а i < a. Т.к надо cчитать до a-1 элемента включительно. Таким образом 1 непрочитанный элемент избавлял массив от симметричности и в файл, в качестве else, выдавался 0.

→ Ссылка