Eine Kopie der Eingelesenen Datei mit einer anderen Endung erstellen...
-
ich habe es jetzt mal so versucht
... std::ifstream(directory1); std::ofstream asd( "kopie.lst" ); asd<<directory1; ...der zeigt mir keine Fehlermeldung nur die directory1 file (welches halt auf den Inhalt kopiert werden soll) hat nur diese Adresse drinne stehen...
geht das überhaupt mit asd<<directory1 ? Das war nur ein experiment...
... Mit ifsteam::read and write habe eich es halt nicht so richtig hinbekommen,der findet das nicht!
-
präziser formuliert nun wie kann ich den inhalt einer Datei in einer andere Datei kopieren...
Im späteren verlauf muss ich statt einen leerzeichen 7 weitere leerzeichen zwischenfügen... Aber das ist eine andere Geschichte

-
Nein, das geht so nicht, du musst das erst einlesen.
Bsp:std::ifstream rd("datei1"); std::ofstream wr( "kopie.lst" ); while ( !rd.eof() ) { std::string line; std::getline(line, rd); wr << line; } wr.close(); rd.close();So wäre das als bsp. Zeilenweise.
Es geht auch zeichenweise mit read() oder write():std::ifstream rd("datei1"); std::ofstream wr( "kopie.lst" ); while ( !rd.eof() ) { char buffer[1024]; rd.read(buffer, 1024); wr.write(buffer, 1024); } wr.close(); rd.close();rya.
-
Vielen Dank nochmal für den Code, jetzt verstehe ich es zwar aber der Compiler liefert mir Fehlermeldungen...Mit den ich nichts anfangen kann!
1>------ Build started: Project: Tool, Configuration: Debug Win32 ------
1>Compiling...
1>tool.cpp
1>.\tool.cpp(248) : error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : could not deduce template argument for 'std::basic_istream<_Elem,_Traits> &' from 'std::string'
1> D:\Program Files\Microsoft Visual Studio 8\VC\include\string(528) : see declaration of 'std::getline'
1>.\tool.cpp(248) : error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : could not deduce template argument for 'std::basic_istream<_Elem,_Traits> &' from 'std::string'
1> D:\Program Files\Microsoft Visual Studio 8\VC\include\string(528) : see declaration of 'std::getline'
1>.\tool.cpp(248) : error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : could not deduce template argument for 'std::basic_istream<_Elem,_Traits> &' from 'std::string'
1> D:\Program Files\Microsoft Visual Studio 8\VC\include\string(528) : see declaration of 'std::getline'
1>.\tool.cpp(248) : error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : could not deduce templateargument for 'std::basic_istream<_Elem,_Traits> &' from 'std::string'
1> D:\Program Files\Microsoft Visual Studio 8\VC\include\string(528) : see declaration of 'std::getline'
1>.\tool.cpp(248) : error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : expects 3 arguments - 2 provided
1> D:\Program Files\Microsoft Visual Studio 8\VC\include\string(476) : see declaration of 'std::getline'
-
Dreh die Parameter von getline, die hab ich vertauscht aus Versehen :).
Erst den Stream, dann den String.
also std::getline( rd, line );
rya.
-
hehe ok... Das habe ich jetzt geändert kriege keien Fehlermeldungen mehr, aber das Programm stürzt ab... Kann die Files in der GUI einlesen sobald ich auf ok klicke fliegt mir das Programm um die Ohren bzw. kriege keien Rückmeldung mehr...
kann es sein das da noch Fehler drin enthalten sind ?
std::ifstream read("directory1"); std::ofstream write( "kopie.lst" ); while ( !read.eof() ) { std::string line; std::getline(read, line); write << line; } write.close(); read.close();
-
Ok, wenn ich die Datei explizit eingebe dann Funktioniert es, aber wieso akzeptier es nicht die selektierte Datei ? bzw. directory 1!!!???
Aber ansonsten funktioniert es Prima nur ich habe noch ein kleines Problem
Wenn ihr schonmal so nett sei 
Die Formatierung stimmt nicht so ganz, es macht keine Zeilenbrüche rein, und versuct alles in eine Zeile reinzuschreiben... Mir wäre Zeilen umbrüche halt viel lieber...
-
Dateien die an ifstream übergeben werden, müssen existieren und man muss entweder den relativen (zum Ausführungsort der .exe) oder den absoluten pfad angeben.
Für Zeilenumbrüche:write << line << std::endl;edit: Syntaktisch ist das so ok.
rya.
-
Ok, das mit der Datei muss ich dann noch dann demenstprechend anpassen...
Mit den Zeilenumbrüchen klappt auch Prima... Danke!
Ich habe mal versucht, das es zu einem bestimmten keyword (der einmalig ist) springt und ab da anfängt zu kopieren...
Wieso funkgt das nicht

std::ifstream read(directory1); std::ofstream write( "kopie.lst" ); while ( !read.eof() ) { std::string line; while (std::getline( read, line ) && line!="Keyword" ); std::string line; std::getline(read, line); write << line<<std::endl; } write.close(); read.close();
-
ok habe das auch hinbekommen dankeschön
