Jak sprawdzić czy plik jest pusty ?

0

Próbowałem coś takiego:

for(int i = 0; i < !file_edit.eof() ; ++i)
        {
            bool spr = 0;
            file_edit >> abc;
            if(abc){}
            else spr = 1;
        } 

Ale stringa nie da się porównać do liczby, można przekonwertować na inta, ale nie wiem czy to dobry pomysł aby tak sprawdzać?

0

dobra dzięki, wcześniej to przeglądałem i się zastanawiałem czemu nie działa. Okazało się, że plik mam otwarty jako ofstream. Jeśli plik mam otwarty jako ofstream to trzeba go zamknąć i otworzyć jako fstream żeby sprawdzić czy jest pusty czy jest jakiś inny sposób ?

0
 inFile.seekg(0, ios::end);  
if (inFile.tellg() == 0) {    
  // ...do something with empty file...  
}

co to za zmienna tellg ?

2

To nie zmienna, tylko funkcja/metoda i wg dokumentacji:

Returns the position of the current character in the input stream.

http://www.cplusplus.com/reference/istream/istream/tellg/

2

tellg to metoda zwracająca aktualne położenie "kursora" w pliku. a ponieważ wcześniej ustawiłeś "kursor" na końcu pliku, to jeśli będzie to 0, to znaczy, że plik jest pusty

0

jeśli mam otwarty plik jako ofstream to z tego nie mogę skorzystać. A gdy ten sam plik próbuje otworzyć jako ifstream to kompilator pokazuję błąd,że nie mogę bo już plik o takiej nazwie istnieje jako ofstream. Muszę to zrobić za pomocą ifstream/ofstream. Da się jakoś tak ? Bo najpierw muszę go mieć otwarty jako ofstream aby do niego dane wczytać.

1

Dla ofstream jest metoda tellp.

0

pokazuje mi błąd: std::ofstream has no member named 'seekg'

`dodanie znacznika ``` - @furious programming

0

jeśli tellg to aktualne położenie kursora w pliku. To on tylko jeden znak w pliku przyrównuje do zera czy cały plik ? Bo jak mam kursor ustawiony na koniec pliku to porówna tylko ten ostatni znak do zera czy zawartość całego pliku od początku ?

0

ale jeśli na końcu piku nie ma nic,a wcześniej coś jest ? To też na 0 jest ustawiony ?

0

co wg Ciebie znaczy że plik jest pusty?
jest pusty to znaczy zajmuje 0 bajtów - nie ma w nim nic, nie może więc w nim nic być "wcześniej" bo wtedy by nie był pusty

co właściwie chcesz zrobić?

1 użytkowników online, w tym zalogowanych: 0, gości: 1