Datein Kopieren



  • Hallo folgendes möchte ich machen:

    Das Programm liesst aus einer Textdatei aus was gespeichert werden soll.

    In test.txt steht z.b.

    datei_1.txt
    datei_2.txt
    datei_3.txt

    Diese 3 Datein sollen nun Kopiert werden, das Ziel Verzeichniss [ Das Verzeichniss wo diese 3 Datein hinkopiert werden sollen ] wird aus der Datei ziel.txt entnommen.

    Nur jetzt weiss ich nicht wie ich alle Diese 3 Datein da speicher soll, so wie ich es jetzt habe ist es ja Schwachsinn weil die Datein ja immer wieder

    überschrieben werden die ich Kopiere so das ich am ende halt nur datei_3.txt gesichert habe.

    Hat wer eine Idee wie man das Lösen könnte ?

    #include <iostream>
    #include <fstream>
    #include <vcl>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    
    bool error;
    
    ifstream datei;
    
    char *datei_name = "test.txt";
    const char *datei_name_2;
    
    string datei_ort[256];
    string datei_zeilen[256];
    
            datei.open( datei_name );
    
                for (int i=0; i<4 ; i++)
                {
                        datei >> datei_zeilen[i];    // text zeilenweise aus datei lesen
                }
                datei.close();
    
                for (int i=0; i<4 ; i++)
                {
                     datei_name_2 = datei_zeilen[i].c_str();
                     datei_ort[i] = datei_zeilen[i];
                }
    
    ifstream ziel;
    
    char *ziel_name = "ziel.txt";
    const char *ziel_name_2;
    
    string ziel_ort;
    string ziel_zeilen[2];
    
            ziel.open( ziel_name );
    
                    for (int i=0; i<2 ; i++)
                    {
                           ziel >> ziel_zeilen[i];    // text zeilenweise aus datei lesen
                    }
                    ziel.close();
    
                     ziel_name_2 = ziel_zeilen[0].c_str();
                     ziel_ort = ziel_zeilen[0];
    
                    for (int i=0;i<4;i++)
                    {
                        CopyFile( datei_ort[i].c_str() , ziel_ort.c_str() ,error);
                    }
    
    return 0;
    }
    


  • Hmmm... auf die schnelle würde ich das ganze so machen:

    //main.cpp
    #include <iostream>
    #include <vector>
    #include <string>
    #include <fstream>
    
    int main()
    {
    	const std::string quell_datei("test.txt");
    	const std::string ziel_datei("ziel.txt");
    	std::ifstream input(quell_datei.c_str());
    	if(!input) {
    		std::cerr << quell_datei << " wurde nicht gefunden." << std::endl;
    		return 1;
    	}
    	std::vector<std::string> dateinamen;
    	std::string zeile;
    	// Dateinamen aus Quelldatei lesen und "merken"
    	while(std::getline(input, zeile)) {
    		dateinamen.push_back(zeile);
    	}
    	input.close();
    	std::ofstream output(ziel_datei.c_str(), std::ios::out | std::ios::app);
    	// Zu lesende Dateien öffnen, inhalt Zeilenweise auslesen und in Zieldatei schreiben
    	for(std::vector<std::string>::iterator it = dateinamen.begin(); it != dateinamen.end(); ++it) {
    		input.clear();
    		input.open(it->c_str());
    		if(!input) {
    			std::cerr << *it << " wurde nicht gefunden." << std::endl;
    			continue;
    		}
    		while(std::getline(input, zeile)) {
    			output << zeile << "\n";
    		}
    		input.close();
    	}
    
    	return 0;
    }
    

    Ganz hilfreich dürften für dich auch die auf dieser Seite aufgelisteten Flags für den "Ein- / Ausgabemodus" sein.


Anmelden zum Antworten