Programm zur Dateiausgabe



  • Also Folgendes:

    Ich möchte ein Programm in C++ schreiben, mit dem ich eine Datei ausgebe und jedes mal, wenn ich das Programm erneut durchlaufe, wird die neue Ausgabe in einer neuen Datei mit dem Dateinamen "bla_i+1.txt".
    Ich bin noch ganz am Anfang, weswegen ich noch nicht die meiste Ahnung habe. Also wenn ich Fragen bezüglich des Inhaltes im Quelltext habe, bitte nicht böse sein!

    Also meine Idee war, das i+1 mit einer Schleife zu verlinken, welche bei jeder Exekution des Programms den Namen um 1 höher setzt.
    Aber dann habe ich keine Ahnung, wie man das mit einander verbindet.

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <time.h>

    using namespace std;

    int main()
    {
    int i = 104;
    string str;
    string s;
    fstream txtd;

    // Datei schreiben
    txtd.open("Was auch immer du eingibst, wird hier drinstehen.txt", ios::out | ios::trunc);
    txtd << "Hallo " << s << endl;
    txtd.close();
    
    // Datei auslesen und anzeigen
    txtd.open("Was auch immer du eingibst, wird hier drinstehen.txt", ios::in);
    
    while(!txtd.eof())
    {
    	getline(txtd, s);
    	cout << s << endl;
    }
    
    txtd.close();
    cin.get();
    

    }

    Das habe ich bisher geschrieben.

    Danke schon mal für Eure Hilfe! 🙂

    JTR



  • Fun with streams:

    #include <cstdlib>   // EXIT_SUCCESS, EXIT_FAILURE
    #include <string>    // std::string, std::getline()
    #include <sstream>   // std::ostringstream
    #include <fstream>   // std::ofstream
    #include <iostream>  // std::cin, std::cout, std::cerr
    
    int main()
    {
    	for (long long unsigned i = 1;; ++i) {  // i von 1 in 1erschritten hochzählen, dabei
    		
    		std::ostringstream filename{ "bla_" };  // dateinamen aus prefix "bla_"
    		filename << i << ".txt";  // und dem wert von i zusammenbasteln.
    
    		// Bedienungsanleitung ausgeben:
    		std::cout << "Everything you input will be written to \"" << filename.str() << "\".\n"
    		             "To end input enter EOF (Ctrl-Z on windows, Ctrl-D on unix).\n"
    		             "To quit the program enter EOF at the beginning of the first line.\n\n";
    
    		// in text alle zeilen zusammenstoppeln
    		std::string text;
    		// lesen solange std::cin in keinem fehlerzustand wie zB EOF ist und an text anhaengen
    		for (std::string line; std::getline(std::cin, line); text += line + '\n');
    		// Fehlerzustand von std::cin loeschen
    		std::cin.clear();
    
    		// wenn nichts in text steht hat der user sofort EOF eingegeben -> programm beenden
    		if (!text.length())
    			return EXIT_SUCCESS;
    		
    		// sonst datei zum schreiben oeffnen und checken ob sie geoeffnet werden konnte
    		std::ofstream file{ filename.str() };
    		if (!file.is_open()) {
    			std::cerr << "Couldn't open \"" << filename.str() << "\" for writing :(\n\n";
    			return EXIT_FAILURE;
    		}
    		// text in die Datei schreiben
    		file << text;
    	}
    }
    


  • Kannst du mal durch denn Quelltext gehen, und erläutern, was die einzelnen Funktionen usw machen?
    Das wäre echt lieb! 🙂



  • @JTR666 habe ich


Log in to reply