2017-12-03 5 views
-1

Also versuche ich ein Programm zu erstellen, das liest, was in einer Textdatei ist und dann Plätze zwischen zwei Elementen im Vektor zu tauschen.Vector Probleme, eine kleine Hand vielleicht?

Die Textdatei hat diese Reihenfolge: NAME NACHNAME REGISTRATION_NUMBER UND CITY_ADRESS und ist eine Liste von vielleicht 100 Personen ... da die Reihenfolge ist die gleiche ich finde, dass ich nur den Platz zwischen ersten und zweiten und ändern müssen inkrementiere ich mit 2, damit ich wieder zum Vornamen komme ... aber das ist nicht mein größtes Problem ...

Wenn ich getline benutze, sieht es aus wie es alles in das erste Element des Vektors steckt, das ist komisch und deswegen kann ich die Plätze im Namen nicht ändern. Ich kann nicht herausfinden, wie man das ändert ... ich würde es gerne machen, wenn ein Leerzeichen auftritt, ändert sich das Element.

Ich bin dankbar für die Hilfe, die ich bekommen kann.

#include <iostream> 
#include <fstream> 
#include <string> 
#include <vector> 

using namespace std; 

int main() { 
    vector<string> line; 
    string information; 
    ifstream myfile ("Namn.txt"); 
    if (myfile.is_open()) { 
    while (getline(myfile, information)) { 
     line.push_back (information); 
    } 
    myfile.close(); 
    }else cout << "Filen gick inte att öppna!"; 

    for (unsigned int i = 0; i < line.size(); i++) { 
    cout << line[i] << endl; 
    } 
    return 0; 
} 
+0

[ 'using namespace std;' ist eine schlechte Praxis] (https://stackoverflow.com/q/1452721/2176813), es nie verwenden. – tambre

+0

Ich weiß, dass ich es nicht wirklich benutze, aber das ist nicht das größte Problem, das ich gerade habe :) kann sich nur am Ende ändern. –

+0

sind alle diese Felder in einer Zeile in der Textdatei? Wenn dies der Fall ist, können Sie entweder jedes Feld in einer neuen Zeile haben, dann haben Sie eine zusätzliche Zeile, die zwei separate Personen trennt, oder lesen Sie die ganze Zeile wie Sie sind und trennen Sie sie manuell in den Vektor. –

Antwort

0

Sie können Ihre Datei mit fstream und analysieren die gleichzeitig gelesen, legte dann alle Elemente der Informationen in den Vektor von Vektoren und dann können Sie mischen und zusammenzupassen Bits an Informationen sowieso Sie mögen, wie folgt aus:

#include <fstream> 
#include <string> 
#include <iostream> 
#include <vector> 

int main() 
{ 
    std::string name; 
    std::string surname; 
    std::string registration; 
    std::string location; 
    std::vector<std::vector<std::string>> information; 

    std::ifstream myfile("Namn.txt"); 

    while (myfile >> name >> surname >> registration >> location) 
     information.push_back({name, surname, registration, location}); 

    // print 

    for (auto const &info : information) 
    { 
     std::cout << info[1] << " " << info[0] << " " << info[2] << " " << info[3] << std::endl; 
    } 

    return 0; 
} 

Drucke:

Andersson Rune 12873645 Stockholm 
Isaksson Peter 12873645 Uppsala 
Gustavsson Fredrik 12873645 Gothenborg 
+0

Warum Vektor > Informationen? und es funktioniert nicht, da die Zahlen zusammen mit dem Nachnamen sind. –

+0

erster Vektor ist Vektor der Zeilen in Ihrer Datei, zweiter Vektor ist Vektor der Wörter in einer Zeile. Um auf den Nachnamen der 2. Zeile zuzugreifen, gehst du "Information [1] [1]" oder bei der Registrierung - 'Information [1] [2]', etc. Ich dachte, das ist, was du verlangst, in der Lage, Name und Vorname um –

+0

zu tauschen @AllamoOlsson '>> Es funktioniert nicht, da die Zahlen zusammen mit dem Nachnamen sind, was meinst du damit? –

Verwandte Themen