Daten manuell Kopieren
-
Moin moin,
Meisten hat man als Anfänger dass Problem uneffizienten, fehlerbehafteten Code zu schreiben.
Schaut euch mal folgenden Code an und gebt mir euer Feetback was ich besser machen kann bzw. ob ich eventuell gravierende Anfängerfehler geschrieben habe.
//Programm zum Kopieren einer Textdatei in eine definierte andere //Kurz: rechtklick/Kopieren/einfügen nur umständlicher :) #include <cstdlib> #include <iostream> #include <fstream> #include <string> //Header für Strings using namespace std; //Den Namensraum std verwenden um sich std:: zu sparen // Beginn der Hauptfunktion int main(int argc, char *argv[]) { char pfad[80]; //Benutzereingabe char zeile[80]; //Länge einer Zeile string speicher; //Für die Kopie cout << "Bitte geben sie den Pfad der auszulesenden Datei an!" << endl; cin.getline(pfad, 80); // Benutzereingabe abwarten ifstream data(pfad); //Lesestream öffnen //Schreibt die Textzeilen in eine Datei IM GLEICHEN ORDNER! ofstream dataIn("NeueDaten.txt", ios::out | ios::app); //Schreibstream öffnen // Zeile für Zeile den String füllen und in die neue Datei kopieren while( data.getline( zeile, 80)) { cout << zeile << endl; speicher =zeile; dataIn << speicher << endl; } dataIn.close(); // Schließen der Streams data.close(); system("PAUSE"); //Systemabhängige Warteschleife return EXIT_SUCCESS; // return 0; }Aja, dass Programm soll später zum Lesen einer Datei und dann zum Zeichnen eines 2D Graphen verwendet werden. Vielleicht hat noch jemand einen Tipp wie ich am besten ein x/y Koordinatensystem mit einer Funktion realisiere.
Viel Spass^^
-
getline geht doch auch direkt mit string
-
Jo thx.
Du meinst ich sollte die Benutzereingaben mit einem String speichern und dann direkt und nur mit einem Sring arbeiten oder?
Wenn du die Zuweisung meinst:
...cout << zeile << endl; speicher =zeile; dataIn << speicher << endl; ...Jo da könnte ich noch
dataIn << zeile << endl;schreiben.
Oder was meinst du genau?

-
Ich an deiner Stelle würde die Datei binär behandeln. Dadurch, dass die Daten in Dateien ja nicht Zeile für Zeile sondern Zeichen für Zeichen abgespeichert werden und der Code für eine neue Zeile auch einfach nur ein Zeichen ist, muss ja mit "getline" immer erst nach dem Zeilenende gesucht werden.
Und: Wie stellst du sicher, dass die neue Datei im _gleichen_ Ordner wieder gespeichert wird? Im Moment anscheinend noch gar nicht.