Input/Output Problem
-
Hallo, ich hab eine Frage und vielleicht können die Experten/Wissenden mir helfen
Hier ist der Quellcode:
#include <iostream> #include <cstdlib> //Exit() #include <fstream> //ifstream, ofstream #include <string> using namespace std; int main() { string quelldateiname("in.txt"); string zieldateiname("out.txt"); char ch; //Datei öffnen ifstream quelle(quelldateiname.c_str(), ios::binary | ios::in); if(!quelle) { cerr<<quelldateiname<<" kann nicht geoeffnet werden"<<endl; exit(-1); } ofstream ziel(zieldateiname.c_str(), ios::binary | ios::out); if(!ziel) { cerr<<zieldateiname<<" kann nicht geoeffnet werden"<<endl; exit(-1); } while(quelle.get(ch)) { ziel.put(ch); } system("PAUSE"); return 0; }Damit will ich eine Datei öffnen, in der was eintippen und zeichenweise in die
zweite Datei kopieren. Doch es erstellt nicht mal die Datei was es eigentlich
tun sollte durch ios::in und/oder ios::out, nicht?Danke für die Antworten schon mal
mfg Zenter
-
Zenter schrieb:
Doch es erstellt nicht mal die Datei was es eigentlich
tun sollte durch ios::in und/oder ios::out, nicht?Jürgen Wolf?
:pDas Flag
ios::inverhindert genau das. Erst mit einemstd::ofstreamkann eine Datei erstellt werden. Bedeutet: Entwederstd::ofstream null("Dateiname.txt", std::ios::trunc);an den Anfang schreiben und die Datei erstellen/leeren, oder manuell erstellen.
-
Hallo, danke erstmal für die Antwort und nein es ist kein Buch vom Jürgen Wolf^^.
Habs mit
#include <iostream> #include <cstdlib> //Exit() #include <fstream> //ifstream, ofstream #include <string> using namespace std; int main() { ... ifstream quelle(quelldateiname.c_str(), ios::binary | [b]ios::trunc[/b]); ... ofstream ziel(zieldateiname.c_str(), ios::binary | [b]ios::trunc[/b]); ... return 0; }probiert doch es funktioniert nicht. Es kann auch garnicht funktionieren in meine Augen den für ifstream
braucht man ios::in damit man die Datei einlesen kann und für ofstream ios::out damit man in eine Datei reinschreiben kann
-
Da es hier so oft vorkommt, tippe ich mal ins Blaue, dass eigentlich alles funktioniert, bloss dass es ganz woanders stattfindet als du denkst und du daher die Datei nicht findest.
Das ios::in bzw. ios::out kannst du dir bei ifstream bzw. ofstream uebrigens sparen, dass ist schon implizit.
-
Hallo SeppJ,
dass es woanders die Datei gespeichert bzw. erstellt wird, kann nicht sein, denn durch die Abfrage ob die Datei überhaupt geöffnet wurde
if(!quelle)kommt das Programm nicht vorbei und wird durch
exit(-1);dann beendet. Das heißt das die Datei nicht erstellt wurde und somit auch nicht geöffnet wurde.
mfg Zenter
-
Warum sollte eine Datei, die zum Lesen geöffnet wird, vom Programm erstellt werden? Das ist doch völlig sinnfrei.
-
Hallo manni66,
da hast du aufjeden fall recht!!

hab nun selber die Datei erstellt für ifstream und darin was geschrieben. Das Programm hat die ofstream Datei erstellt und das geschriebene in die ofstream Datei kopiert. Hat ganz gut geklappt.Dank dir!!
Logik war die Lösung thanks.
Der thread kann geschlossen werden

mfg Zenter