Frage zum Thema "Txt-Dateien verarbeiten"



  • Mein Programm soll den gesamten Text aus einer Datei lesen(Durch Zeilenumbrüche getrennt) und in zufälliger Reihenfolge in einer anderen Textdatei speichern.

    Bsp:

    Daten.txt:

    Meier
    Huber
    Müller
    Schuster

    Ausgabe.txt

    Huber
    Müller
    Meier
    Schuster

    Ich habe mir folgendes überlegt :
    Man könnte Daten.txt einlesen, in einem Array speichern und dann zufällig wieder speichern...
    Aber genau hier komme ich nicht weiter (bin noch ein ziemlicher Anfänger 😃 )



  • Sieh dir dazu mal die Methoden "ReadAllLines" und "WriteAllLines" der File-Klasse an.

    Vorgehen wäre:

    1. Datei einlesen
    2. Liste sortieren
    3. Liste in Datei speichern


  • Code lässt sich ausführen, es gibt aber einen Fehler,wenn es zum Einlesen der Datei kommt (erste while-Schleife).
    Wie kann ich das ändern?

    #include <iostream>
    #include <string>
    #include <fstream>
    #include <algorithm>
    
    int main()
    {
    
    	std::string DatenArray[100];
            std::string DatenBuffer;
    
    		std::ifstream Daten;
    		Daten.open("Daten.txt");
    		while (Daten>>DatenBuffer)
    		{
    			for(int i=0;i<=100;i++)
    			{
    				DatenArray[i]= DatenBuffer;
    
    			}
    		}
    
    		std::random_shuffle(std::begin(DatenBuffer),std::end(DatenBuffer));
    
    		std::ofstream Ausgabe;
    		Ausgabe.open("Ausgabe.txt");
    
    		for(int i =0;i<=100;i++)
    		{
    			Ausgabe<<DatenArray[i]<<std::endl;
    
    		}
    
    		Ausgabe.close();
    
    return 0;
    }
    

    EDIT: Das Array war zu klein



  • Ok,

    du scheinst schonmal nicht in C++/CLI sondern in C++ zu arbeiten.

    Sehe ich das richtig, dass du dein Problem mit dem Einlesen gelöst hast?



  • So bin fertig mit dem Code:

    #include <iostream>
    #include <string>
    #include <fstream>
    #include <algorithm>
    #include <cmath>
    #include <time.h>
    
    int main()
    {
    
    	srand((unsigned int)time(NULL));
    
    	std::string KlassenName;
    	std::string TabellenName;
    	std::string DatenArray[10000];
    
    	std::string ArrayAusgabe[10000];
    
    	std::cout<<"Tabellenname : "<<std::endl;
    	std::cin>>TabellenName;
    	std::cout<<"KlassenName : "<<std::endl;
    	std::cin>>KlassenName;
    
    	std::string DatenBuffer;
    
    	std::ifstream Daten;
    	Daten.open("Daten.txt");
    	int iL=0;
    	int iS=0;
    	int iP=0;
    	while (Daten.good())     //Einlesen
    	{
    
    		Daten>>DatenBuffer;
    		DatenArray[iL]= DatenBuffer;
    		iL++;
    	}
    
    	for(int i=0;i<=999999;i++) // Zufällig mischen
    	{
    
    		int rZahl = rand() % 1000;
    
    		if(DatenArray[rZahl] != "")
    		{
    			ArrayAusgabe[iP]=DatenArray[rZahl];
    			iP++;
    		}
    
    	}
    
    	std::ofstream Ausgabe;
    	Ausgabe.open("Ausgabe.txt");
    
    	for(int i =0;i<=9999;i++)			//Ausgabe in Datei
    	{
    
    		Ausgabe<<"Insert into "<<TabellenName<<"("<<KlassenName<<") values ("<<ArrayAusgabe[i]<<")"<<std::endl;
    
    	}
    
    	Ausgabe.close();
    
    	return 0;
    }
    

    Btw der Code ist dazu da, um SQL-Datenbanken mit Daten zu füllen (zufällig und nicht zusammenhängend) 😃


Log in to reply