Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » ifstream in Kombination

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
20.11.2012, 13:23 Uhr
Masskrug



hallo ich hätte mal eine Frage bezüglich "ifstream" in Kombi mit anderen Funktionen

Beispiel copy,remove:

C++:
#include <windows.h>
#include <stdio.h>

int main()
{

  CopyFile("D:\\ZickZack.txt","D:\\bilder\\SCRIPT3000.txt",0);
  remove("D:\\ZickZack.txt");

  system("PAUSE");
  return 0;
}




funktioniert ohne Probleme.

wenn ich jedoch einen ifstream mit einbaue wird nur die Datei kopiert und nicht mehr gelöscht.

Beispiel ifstream, copy,remove:


C++:
#include <fstream>
#include <windows.h>
#include <stdio.h>

int main()
{
  ifstream file("D:\\ZickZack.txt");

  CopyFile("D:\\ZickZack.txt","D:\\bilder\\SCRIPT3000.txt",0);
  remove("D:\\ZickZack.txt");


  system("PAUSE");
  return 0;
}



kann mir jemand den Grund dafür nennen?

Wahrscheinlich wird die Datei durch den ifstream blockiert?


Danke für die Antworten Jungs und Mädels
---
Edit: cpp-Tags eingefügt.

Dieser Post wurde am 21.11.2012 um 23:43 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.11.2012, 14:21 Uhr
ao

(Operator)


Genau. Die Datei ist durch den ifstream zum Lesen geöffnet und kann daher nicht gelöscht werden. Geschlossen (und damit freigegeben) wird sie an der Stelle, an der das Objekt file zerlegt wird, in diesem Fall also an der schließenden Klammer am Ende von main.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.11.2012, 15:02 Uhr
~masskrug1
Gast


ok danke für die antwort

gibt es eine einfach Möglichkeit

das File wieder freizugeben innerhalb der Klammer

-> evtl mit ofstream oder so?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.11.2012, 16:34 Uhr
~f.-th.
Gast


ao hat dich drauf hingewiesen:

C++:
#include <fstream>
#include <windows.h>

int main()
{
  {
    ifstream file("D:\\ZickZack.txt");
  }

  CopyFile("D:\\ZickZack.txt","D:\\bilder\\SCRIPT3000.txt",0);
  remove("D:\\ZickZack.txt");


  system("PAUSE");
  return 0;
}


Nutze die CodeTags - unter Quellcode links neben dem Editierfeld.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.11.2012, 16:41 Uhr
ao

(Operator)


Wozu erzeugst du das ifstream-Objekt, wenn du es gar nicht verwendest? Oder ist der Code noch nicht fertig?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.11.2012, 21:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ansonsten sollte auch ein "file.close()" reichen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.11.2012, 22:13 Uhr
~f.-th.
Gast


Zu:"file.close()"
http://stackoverflow.com/questions/748014/do-i-need-to-manually-close-a-ifstream
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.11.2012, 09:45 Uhr
Masskrug



Danke leute eure Tipps waren super
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.11.2012, 22:40 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von ~f.-th.:
Zu:"file.close()"
http://stackoverflow.com/questions/748014/do-i-need-to-manually-close-a-ifstream




naja es gibt fälle, da muss mans manuell machen (z.b RO file schließen um die dann RW zu öffnen oder so)
--
class God : public ChuckNorris { };

Dieser Post wurde am 01.12.2012 um 09:27 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
24.11.2012, 08:57 Uhr
~f.-th.
Gast


Sollte heute bei aktuelle Compilern so funktionieren.
Siehe Stichwort: "RAII C++"


C++:
#include <fstream>

int main()
{
  ...
  {
    ifstream file("ZickZack.txt");
    ...
  }
  ...
  {
    ofstream file("ZickZack.txt");
    ...
  }
  ...
}



Ich weiss, ich muss da noch sehr viel lernen, hab da auch noch C-Relikte und "old C++ Stil" mehr als heute notwendig am Start. Aber da der C-Standard erst mit C++11 wieder einige C-Relikte überflüssig gemacht hat und und der Standard noch nicht vollständig in den aktuellen Compilern umgesetzt wurde, dürfen wir wohl weiter lernen.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: