Anfänger: Öffnen und Speichern von Strings in Dateien klappt nicht
-
Hallo!
Wie kann ich einen (binären) String aus einer Datei laden und wieder in eine andere Datei speichern? Warum funktioniert mein Beispiel nicht?
Viele Grüße
pmw#include <iostream> #include <string> using namespace std; int main(int argc, char *argv[ ]) { FILE *datei; string inputfile; string outputfile; string data; inputfile = argv[1]; outputfile = argv[2]; ifstream file(inputfile); file>>data; fstream file(outputfile); file<<data; cout << inputfile << endl << outputfile;; getchar(); return 0; }
-
Fehlermeldung:
LZ77.cpp: In function `int main(int, char**)': LZ77.cpp:16: variable `std::ifstream eingabe' has initializer but incomplete type LZ77.cpp:19: variable `std::ofstream ausgabe' has initializer but incomplete type
-
Hallo,
es fehlt ein #include <fstream> am Anfang.FILE *datei;
Das ist überflüssig.
Der restliche Code macht dann aber auch nicht das was du willst. Ein Blick in unsere FAQs sollte helfen:
http://www.c-plusplus.net/forum/viewtopic.php?t=39469
-
Leider speichert das Programm jetzt nur den Code bis zum ersten \r\n.
#include <iostream> #include <string> #include <fstream> #include <conio.h> #include <stdio.h> using namespace std; int main(int argc, char *argv[ ]) { string inputfile; string outputfile; string data; inputfile = argv[1]; outputfile = argv[2]; ifstream eingabe(inputfile.c_str(),ios::binary); eingabe>>data; ofstream ausgabe(outputfile.c_str(),ios::binary); ausgabe<<data; cout << inputfile << endl << outputfile;; getchar(); return 0; }
-
Der restliche Code macht dann aber auch nicht das was du willst. Ein Blick in unsere FAQs sollte helfen:
http://www.c-plusplus.net/forum/viewtopic.php?t=39469Welcher Teil davon ist unklar?
-
Ich habe nirgendswo gefunden, wie ich eine binäre Datei in einen String laden kann.
-
Leider speichert das Programm jetzt nur den Code bis zum ersten \r\n.
Wenn du das nicht willst, solltest du die Daten wahrscheinlich Byte für Byte einlesen und schreiben...
http://www.cplusplus.com/ref/iostream/istream/get.html
http://www.cplusplus.com/ref/iostream/ostream/put.html
-
Ich habe nirgendswo gefunden, wie ich eine binäre Datei in einen String laden kann
Ok. Mal davon abgesehen, dass "binäre Datei" nicht ganz der richtige Begriff ist:
Das geht nicht so einfach. Unformatiertes lesen macht man entweder mit get oder mit read. Beide Funktionen arbeiten nicht direkt mit std::strings.Was du machen kannst:
ifstream eingabe(inputfile.c_str(),ios::binary); eingabe.seekg(0, ios::end); unsigned long fileSize = streamoff(eingabe.tellg()); eingabe.seekg(0, ios::beg); std::vector<char> inhalt(fileSize); eingabe.read(&inhalt[0], fileSize);
Oder:
ifstream eingabe(inputfile.c_str(),ios::binary); std::string inhalt; for (char c; eingabe.get(c) ; ) inhalt += c;
-
Danke! Es funktioniert.
for (char c; eingabe.get(c) ; )
Dies Zeile verstehe ich leider nicht so ganz.
-
Ich habe mir eine While-Schleife draus gebaut. Die sieht für mich als Delphianer schöner aus
ifstream eingabe(inputfile.c_str(),ios::binary); while (eingabe.get(c)) data += c;
-
Wie funktioniert das Speichern? Bei Quellcode erzeugt nur 0-Byte Dateien.
ofstream ausgabe(outputfile.c_str(),ios::binary); for (int i=0; i<=data.length(); i++) ausgabe.put(data[i]);