Aus .txt nach ABC ordnen

Lemieux66

Mitglied
Hallo zusammen. Ich habe die letzten Tage euer Forum durchstöbert und suchte, wie kann ich eine Datei öffnen, deren Zeilen nach dem ABC ordnen und wieder speichern. Leider habe ich nichts gefunden und hoffe dass mir auf dem Weg jemand helfen kann. Das habe ich schon gemacht:
Code:
     FILE * f = fopen("Ablage.txt", "r+t");

     char Ablage[255];


     cout << "\n\n\n";
     while (!feof(f))
     
     {

     fgets(Ablage,255,f);

     
     cout << "\n" << Abst << Abst << Ablage;
     }    
     

     cout << "\n\n\n";
     
     fclose(f);
     system("PAUSE");

So zeigt es mir den Text an(also es sind verschiedene Titel von Büchern), aber nicht geordnet, nur der Reihe nach wie ich die Zeilen eingegeben habe.
Weiss jemand vielleicht welchen Code ich benutzen kann?
Besten Dank im Vorraus.
 
Hi.

Probier's mal hiermit:
C++:
#include <list>
#include <algorithm>
#include <iterator>
#include <fstream>
#include <string>
#include <iostream>

using namespace std;

int main() {
  ifstream in("datei.txt");
  
  if (!in.is_open()) {
    cerr << "cannot open file.";
    return 1;
  }

  string line;
  list<string> content;

  while (getline(in, line)) {
      content.push_back(line);
  }
  content.sort();

  copy(content.begin(), content.end(),
        ostream_iterator<string>(cout, "\n"));
}
Gruß
 
Vielen Dank für die schnelle Hilfe deepthroat, das glappt wunderbar.
Leider ist mir das mit öffnen und schliessen mit "fstream" weniger geläufig, darum weiss ich jetzt nicht wirklich wie ich den die sortieren Zeilen, Texte wieder speichere?
 
In die gleiche Datei?

Dann nimm einen fstream statt eines ifstream.

Und ändere die Zeilen nach content.sort() wie folgt:
C++:
in.clear();
in.seekp(0);

copy(content.begin(), content.end(),
     ostream_iterator<string>(in, "\n"));
Gruß

PS: Auf Fehlerbehandlung hab ich verzichtet.
 
Zuletzt bearbeitet:
Vielen dank für die super Erklärung. Du hast mir viel Arbeit ersparrt.
Finde ich toll deine Hilfe ohne Gegenleistung.
Gruss Lemieux
 
Zurück