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
SchusterAusgabe.txt
Huber
Müller
Meier
SchusterIch 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:
- Datei einlesen
- Liste sortieren
- 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)