2016-04-11 3 views
-3

Ich habe eine TXT-Datei mit einer Liste von Namen, Sozialversicherungsnummer und Telefon. Ich muss die Namen in alphabetischer Reihenfolge ordnen, aber ich habe keine Ahnung, wie ich das machen könnte. Irgendeine Hilfe?Erstellen Sie eine Liste von Wörtern aus einer Datei C++

Mein Code liest und druckt den Inhalt der Datei bereits korrekt, aber ich blieb stecken und könnte weiter gehen.

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main() { 
    string line; 
    ifstream myfile ("basededados.txt"); 
    if (myfile.is_open()) { 
     while (getline (myfile,line)) 
     { 
      cout << line << '\n'; 
     } 
     myfile.close(); 
    } 

    else cout << "Unable to open file"; 


    return 0; 
    } 
+0

Sie werden die Daten zu speichern, müssen irgendwie und dann sortieren, die Daten gesammelt. Es gibt viele, viele, viele Beispiele, wie man das schon macht. – NathanOliver

+0

könnten Sie uns zeigen, wie Sie die Daten in der Datei haben? Sie könnten uns einige Zeilen zur Demonstration schreiben :) –

+0

Ich würde empfehlen, mit 'std :: istringstream ist (line);' und einem 'std :: vector words;'. –

Antwort

1

Ich brauche die Namen in alphabetischer Reihenfolge zu bestellen, aber ich habe keine Ahnung, wie ich das tun könnte.

Sie haben den Lesecode korrekt, jetzt benötigen Sie einen Container, wo Sie Ihre Daten ablegen können. Ich schlage vor, eine std :: map, als Schlüssel Sie Namen behalten wird, und als Werte ein Paar mit Sicherheitsnummer und Telefon:

std::map<std::string, std::pair<std::string,std::string>> data; 

seit Kartencontainer bestellt wird, wenn es Iterieren Sie die Namen haben (als Schlüssel) natürlich sortiert.

Jetzt für jede Zeile innerhalb Ihrer while Schleife lesen, müssen Sie jeden Datensatz analysieren. Der beste Weg wäre, std::istringstream zu verwenden.

Ich schreibe nicht den vollen Code (wie jemand wahrscheinlich), weil es wie Ihre Hausaufgaben aussieht.

[Bearbeiten]

tatsächlich könnte Ihre Datenbank enthalten Namen wiederholen, in einem solchen Fall könnten Sie benötigen std::multimap statt std::map

+0

Für das einfache alphabetisieren, 'std :: vector' und' std :: list' funktionieren auch, weil Sie 'std :: sort' mit ihnen verwenden. –

+0

@ThomasMatthews meinst du 'std :: list' enthält jeden Datensatz {Name, Sicherheitsnummer, Telefon} und' std :: vector' mit Iteratoren zum Auflisten von Elementen, sortiert nach Namensfeld? – marcinj