Benötige Hilfe beim verarbeiten von Textdateien
-
Hallo,
Ich habe in einem Ordner ca 100 oder mehr .txt Dateien.
In jeder .txt Datei steht nur eine Zahl.
Diese Dateien möchte ich nun geordnet nach der Größe des Wertes aufgelistet bekommen.Bsp:
xyzfsfe.txt 130
jbniubo.txt 127
fjvbjid.txt 98
sdjvnij.txt 77Diese Dateien enthalten ergebnisse aus Berechnungen welche ich als .txt gespeichert habe.
Diese würde ich gerne sortiert anzeigen lassen.Bisher kann mein Prog nur einzelne .txt Dateien einlesen,
bisheriger stand:
std::ifstream file; std::string line; file.open("C:\\Users\\Gunny\\Desktop\\Berechnungen\\Mathe\\xyzfd.txt"); { while (std::getline(file, line)) { std::cout << line << std:: endl; std:: stringstream zeilenpuffer(line); double a; zeilenpuffer >> a ;
Ich arbeite mit c++ seit diesem Semester und habe keine großen Kenntnisse.
Eventuell hat jmd einen Quellcode welcher diese Funktion ausführen kann.
Ich bin für jede Hilfe dankbar
-
Verwendest du irgendein unioxides OS?
-
Ne an meinem Laptop wo ich das Programm schreibe läuft Windows.
-
ca. 100 Dateien mit je nur einem Wert?
Sind in den Dateinamen oder weiteren Dateidaten noch weitere Infos die du benötigst?
Wenn möglich, würde ich da nur eine Datei mit den Daten beschreiben.
Wenn du dir dann noch etwas C++ zu Containern aneignest, sollte dir dann ein recht einfacher Lösungsweg gelingen.
Lösungen sind viele in C++ denkbar - zeig mal was du an Quelltext selbst zusammen bekommst.
-
Also wenn ich die Werte geordnet in eine datei bekommen würde, wäre völlig ausreichend.
Ja es ist tatsächlich nur ein Wert;)
Eine einzelne Datei kann ich auslesen, folgendermaßen ist mein Quelltext:std::ifstream file; std::string line; file.open("C:\\Users\\Gunny\\Desktop\\Berechnungen\\Mathe\\xyzfd.txt"); { while (std::getline(file, line)) { std::cout << line << std:: endl; std:: stringstream zeilenpuffer(line); double a; zeilenpuffer >> a ;
-
Hallo newcomer007,
der Code würde auch etwas kürzer gehen, sofern wirklich nur die eine Zahl in der Datei steht.
std::ifstream file; file.open("foo.txt"); if(file.is_open()) { double value = 0.0; file >> value; } else { std::cerr << "Datei konnte nicht geoeffnet werden!" << std::endl; }
Zum sortieren würde ich ein STL Container verwenden, der die Schlüssel automatisch sortiert, wie z.B. ein std::set. Sollte noch der Dateiname gegen später eine Rolle spielen würde ich eine std::map nutzen.
Viele Grüße
-
Danke für die Hilfe:)
Das Prog welches die einzelnen .txt Dateien schreibt habe ich nun geändert, dass ich eine .txt Datei mit allen Zahlen habe. Diese müsste ich jetzt abfallend ordnen, und speichern.Bsp:
Jan 120
Peter 90
Klaus 70Kann mir jemand vlt einen code schicken, welcher 1. -.txt Datei öffnet
- sortiert
- speichertgruß newcommer007
-
Mein bishereiger Quelltext:
std::ifstream file; std::string line; file.open("C:\\Users\\Gunny\\Desktop\\datenbank\\Bundesliga\\Mannschaften\\fcbayern.txt"); if (file.is_open()) { while (std::getline(file, line)) { std::cout << line << std::endl; std::stringstream zeilenpuffer(line); std::string a; std::string tabelle; double b; zeilenpuffer >> a >> b ; string fname2 = tabelle; fname2.append(".txt"); ofstream newdatabase(fname2.c_str()); newdatabase << a << ' ' << b << ' ' << endl;]
Ich möchte nicht nur eine Zeile sondern alle Zeilen einlesen und sortieren
-
newcomer007 schrieb:
Eventuell hat jmd einen Quellcode welcher diese Funktion ausführen kann.
for i in $(ls *.txt); do echo -n "$i "; cat $i; done | sort -nr -k2
In C++ dürfte es etwas länger sein.
-
Das mit dem Sortieren der .txt Datei hab ich hinbekommen.
Leider speichert mir das Prog jeden Spieler in eine einzele .txt Datei.
Um später zu sortieren benötige ich die Daten in einer .txt Datei.
Kann mir jmd helfen?Bsp:
30 Hans
47 Klaus
89 Peter
45 Florian#include <iostream> #include <fstream> #include <string> #include <sstream> #include <vector> #include <utility> #include <algorithm> #include <clocale> using namespace std; int main() { int auswahl; std::cin >> auswahl; if (auswahl == 2) { std::string Spielername; float gelbekarte; float gelbekarte1 = -1; int auswahl2; a: std::cout << "Spielername" << std::endl; std::cin >> Spielername; std::cout << "Gelbe karte" << std::endl; std::cin >> gelbekarte; pkt = gelbekarte string datenbank; datenbank.append(".txt"); ofstream newdatabase(datenbank.c_str()); newdatabase << pkt << ' ' << Spielername << ' ' << endl; newdatabase.close(); std::cout << "Neuer Spieler\t1" << std::endl; std::cout << "Exit\t\t\t2" << std::endl; std::cin >> auswahl2; if (auswahl2 == 1) goto a; else return 0; }