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.


Anmelden zum Antworten