file existirt ?
-
versuchs mal mit ifstreams
-
bool file_exist(std::string const & file_name) { std::ifstream file_stream(file_name.c_str()), return file_stream; }
Damit sollte es gehen (<string>, <fstream>)!
-
Und wer schließt den Stream?
greetz, Swordfish
-
ich
-
Destruktor?
-
@Devil:
Das funktioniert nur für das aktuelle Verziechnis, nicht für eine ganze Festplatte.
-
?
file_exist("C:/Programme/Adobe/Adobe Reader 6/Reader.exe");was geht daran nicht?
-
Ich hatte es so verstanden, dass man zB
file_exists("Reader.exe");aufruft und dabei die Festplatte nach einer solchen Datei, in welchem Verzeichnis auch immer, sucht.
-
Don06 schrieb:
Ich hatte es so verstanden, dass man zB
file_exists("Reader.exe");aufruft und dabei die Festplatte nach einer solchen Datei, in welchem Verzeichnis auch immer, sucht.
file_exists("Reader.exe");
Nimmt die Funktion das als std:: string const oder als const char* ?
-
Schau dir die Funktion von (D)evil an. cont char* kann implizit in std::string konvertiert werden.
-
(D)Evil schrieb:
?
file_exist("C:/Programme/Adobe/Adobe Reader 6/Reader.exe");was geht daran nicht?
erstens kein '/' sondern '\'
zweitens damit du das Zeichen '\' bekommst musst du '\' schreiben
"C:\\Programme\\Adobe\\Adobe Reader 6\\Reader.exe"drittens:
const std::string file_name("C:\\Programme\\Adobe\\Adobe Reader 6\\Reader.exe"); file_exist(file_name);
-
ok , thx
wäre es nich auch so besser
bool exist(std::string name){ std::ifstream file_stream(name.c_str()); bool open = file_stream; file_stream.close(); return open; }
-
Glock17L schrieb:
erstens […]
zweitens […]
drittens: […]
Klugscheißen will gelernt sein. Try again.
kiba91 schrieb:
wäre es nich auch so besser
bool exist(std::string name){ std::ifstream file_stream(name.c_str()); bool open = file_stream; file_stream.close(); return open; }Hm, was sollte daran besser sein?
-
@Glock17L: Vllt guckst du dir nochmal an, wovon du da redest und denkst dann da nochmal drüber nach ... (Denken => Schreiben)
Und wofür willst du extra ein konstantes String-Objekt erzeugen? Wo ist da der Sinn? Es ist doch gerade das schöne an const-Ref das man das nicht machen muss ...
@kiba91: Nun, close brauchst du nicht extra aufrufen, das wird vom Destruktor von std::ifstream automatisch erledigt. Der Rest erledigt sich dann, oder?
-
Diese Art der Überprüfung ob eine Datei existiert ist nicht zuverlässig. Es könnte auch sein das lediglich keine Zugriffsrechte für den aktuellen benutzer vorhanden sind.
Boost.FileSystem ist eine gute und auch portable alternative hierfür.
BR
Vinzenz