Prüfen ob eine Datei leer ist??
-
Wie kann man prüfen ob, eine Datei leer ist??
Ich habe es mit der Funktion get#include <iostream> #include <fstream> #include <string> using namespace std; int control_file() { ifstream file_in; string tmp = "DATEI"; file_in.open(tmp.c_str(), ios_base::in); if(!file_in) { cout << "Die Datei existiert nicht!" << endl; return -1; } char zeichen; string save; while (file_in.get(zeichen)) { save += zeichen; } string save_tue = ""; if (save == save_tue) cout << "Die Datei ist leer!" << endl; return 1; if(save != save_tue) cout << "Die Datei enthaelt Zeichen!" << endl; return -1; file_in.close(); return 0; } int main() ......
Gibt es nichts Besseres, da wie ich finde diese Funktion ziemlich schlecht und langsam ist und den Code unnötig aufbläht.
mfg CSS
-
uh, explizit open und close würde ich nicht aufrufen. Dein Code scheitn generell ein wenig verweirrend. zB. wenn du schon eine Funktion machst, sollte diese allgemein anwendbar sein und was soll es bedeuten, wenn du 0 zurückgibst? Warum nicht bool?
Das sollte gehen
template<typename Char,class Traits> bool stream_is_empty(std::basic_istream<Char,Traits> &in) { assert(in); in.seekg(std::ios_base::beg); return in.get()==Traits::eof(); } int main() { std::ifstream in("datei"); std::cout << "is empty: " << stream_is_empty(in) << '\n'; }
-
Danke, obwohl ich das nicht ganz verstehe.(Habe Templates noch nicht gelernt, bin gerade bei den Basics)
mfg CSS
-
die sind ja auch nicht das entscheidende an der Funktion.
-
Was dann???
MfG CSS
-
das da:
in.seekg(std::ios_base::beg); return in.get()==Traits::eof();
wenn der anfang der datei gleich deren ende ist, dann sollte die datei eigentlich leer sein.
-
Klingt logisch!
Ich verstehe aber immer noch Bahnhof!mfg CSS
-
google/faq/tutorial.
sorry, mehr könnenw ir da nicht tun. ein bischen arbeit solltest du schon selber investieren
-
Ich glaube Erklärungen nutzen in diesem "Verständnis"-Stadium recht wenig.
http://www.c-plusplus.net/forum/viewtopic.php?t=91987
-
was ist daran schwer zu verstehen?
Wenn du die einzelnen Funktionen nicht kennst
http://www.cplusplus.com/ref/Oder du hast einen Knoten im Hirn, dass kennen die meisten hier wahrscheinlich ziemlich gut. Da hilft es oft mal eine halbe Stunde mal was anderes tun und ein wenig abzuschalten oder einfach der nächste Kaffee
-
Warum versucht ihr soetwas jemandem zu erklären, der nicht mal verstehe was return macht.
Seid ihr dumm? Das bringt doch nichts.