Text Datei einlesen und auswerten



  • Hallo,

    ich habe folgendes Problem:
    Ich habe eine .txt Datei erstellt und es mit daten ausgefüllt wie z.b.

    max,mustermann
    bla,delikanli
    jan,bobby
    ...
    ...
    usw.

    was ich jetzt machen will ist: Die einzelnen namen zu lesen und mit ihnen arbeiten. Und natürlich dass als eine Schleife: z.B. namen die "max" heißen suchen. Wie kann ich bis zum komma einlesen? Woher kann ich abgreifen, dass keine Einträge mehr gibt.
    Hier mein bisheriger Code:

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    #include "E_WahlenDienst.h"
    #include "E_WahlenRechner.h"
    
    void main(){
    
    //****************************************************************
    // fstream damit die Datei zuerst schreibend und dann lesend geöffnet werden kann. 
    fstream File("wahlendatenbank.txt", ios::out); 
    if (File.is_open()) 
    { 
    	string tempOrt;
    	string tempPartei;
        // Nur zwei Datensätze schreiben. 
        // Hier wäre eine Fehlerprüfung angebracht 
        for (int i = 0; i < 3 ; ++i) 
        { 
            E_WahlenDienst waehler; 
            cout << "Ort: "; 
            cin >> tempOrt;
    		waehler.setOrt(tempOrt);
            cout << "Partei: "; 
            cin >> tempPartei;
            waehler.setPartei(tempPartei);
            // Aktuelle Person in der Datei speichern. 
            //File.write((const char*)&Pers, sizeof(Pers)); 
    		File << waehler.getOrt(); 
    		File << ",";
    		File << waehler.getPartei();
    		File << endl;
        } 
        File.close();   // Datei schließen 
    } 
    
    //****************************************************************************
    
    // Datei zum Lesen öffnen. 
    File.open("wahlendatenbank.txt", ios::in); 
    if (File.is_open()) 
    { 
        E_WahlenDienst waehler; 
        for (int i = 0; i < 3 ; ++i) 
        { 
    
    	}
    } 
    
    }
    


  • Hallo

    Du kannst die Datei solange einlesen bis

    File.eof
    

    Ich würde per getline einlesen und dann den string beim Komma trennen.

    chrische



  • Also ich weiss nicht welche übergabeparameter diese getline braucht.

    Hier mein bisheriger nicht funktionerender Code:

    // Datei zum Lesen öffnen. 
    File.open("wahlendatenbank.txt", ios::in); 
    if (File.is_open()) 
    { 
    	int i=0; 
    	string temp;
             while(File.eof())
              { 
    	   temp = File.getline();
                i=i+1;
    	}
    	cout << i;
    
     File.close();   // Datei schließen 
    }
    

    Wie kann ich die Zeile einlesen? Und auf die untere Zeile springen?



  • Hallo

    Ich glaube so:

    getline(File, temp);
    

    chrische



  • Hallo. Wie bekomme ich die zweite Zeile in den String rein

    Hier mein Code

    // Datei zum Lesen öffnen. 
    File.open("wahlendatenbank.txt", ios::in); 
    if (File.is_open()) 
    { 
    	int i=0; 
    	string temp;
             while(File.eof())
            { 
    	   getline(File,temp);
                i=i+1;
    	}
    	cout << i;
    
     File.close();   // Datei schließen 
    }
    


  • Hallo du könntest es mal so probieren
    dies sollte funktionieren 🙂

    if (File.is_open()){
      std::string line;
      while (getline(File, line)){
        int pos = line.find(",", 0);
        std::string first, second;
        first = line.substr(0,pos);
        second = line.substr(pos+1, line.length()-pos+1);
      }
    }
    

    mfg Gast_



  • Hey, das mit der Trennung von der Zeile hat funktioniert. Danke.

    Noch eine Frage:
    Switch- case:

    switch(sPartei)
    		{
    			case PD1: iPD1++ ;break;
    			case PD2: iPD2++ ;break;
    			case PD3: iPD3++ ;break;
    			default : ;
    		};
    

    Hier ist sPartei eine string und wie kann ich im case prüfen, ob das String
    PD1 ist oder muss ich es mit if-Anweisungen und strcompare machen?
    Kann mir jemand hier weiterhelfen. Danke



  • switch arbeitet nicht mit Strings.
    Mach's also mit ifs.


Anmelden zum Antworten