Daten aus Datei an Struct so einfach wie möglich übergeben



  • Hi,

    noch eine Frage. Ich hab eine Datei die folgendermassen aufgebaut ist:

    123;124,12
    122;2;222
    325;2;0

    Jede Zeile ist mit einem Return abgeschlossen. Nun möchte ich wissen wie ich am einfachsten die Werte pro

    Zeile einem Struct mit x1,x2,x3 übergeben kann. Das Struct ist im Normalfall dynamisch, wie in meiner

    vorherigen Frage.

    Danke.

    #include was man so braucht
    
    struct strdaten
    	{
    		int x1;
    		int x2;
    		int x3;
    	}
    
    ifstream dat_ein;
    string dateiname;
    
    main(){
    
    strdaten daten;
    
    ////// ++ Datei einlesen +++++++
    
    cout << "Geben Sie den Namen der zu oeffnenden Datei ein: \n\n\t";
    cin >> dateiname;
    cout << endl;
    
    dat_ein.open(dateiname.c_str(), ios_base::in);
    if(!dat_ein)
    {
    	cerr << "Datei konnte nicht geoeffnet werden!\n";
    	return 1;
    }
    
    ///// ++ Daten an Struct übergebehn, danach Datei schliessen +++++++
    
    char zeichen;
    string str1="";
    
    while (!dat_ein.eof())
    {
    dat_ein.get(zeichen);
    if(zeichen=="\n")
    	{
    
    	//Hier soll aus einem String z.B. "13;112;44\n" die drei Werte jeweils x1,x2,x3 übergeben werden
    	//daten.x1=13; daten.x2=112; daten.x3=44;
    	//WIE MACHT MAN SOWAS AM LEICHTESTEN ???
    	//Ich hab schon einige Ideen, aber die wären einfach zu umfangreich, Abfragen, Schleifen, etc.
    	//Normalerweise müßt hier ein dynamisches Struct sein, mir reicht aber schon wenn es für ein Struct 
    
    geschieht
    
    	str1="";
    	}
    str1.append(zeichen);
    }
    dat_ein.close();
    


  • Mach das einlesen aus der Datei doch so:

    fscanf(fp, "%lf %lf %lf", &x, &y, &z)
    

    und dann:

    #include <vector>
    
    vector<strdaten> meinvector;
    
    strdaten lala;
    lala.blabla = blabla;
    ...
    
    meinvector.push_back(lala);
    


  • Geht das so nicht auch?

    fscanf (PFile, "%2d %2d %2d", &daten.x1, &daten.x2, &daten.x3);
    

    oder so? Wegen den ; in der Datei

    fscanf (PFile, "%2d;%2d;%2d", &daten.x1, &daten.x2, &daten.x3);
    

    Die Datei besteht aus:

    12;1;21
    34;43;1
    3;3;4

    Keine Zahl ist länger als zwei Stellen



  • madking75 schrieb:

    Geht das so nicht auch?

    Klar, wenn du ints mit ; getrennt einlesen willst, mach es so


Anmelden zum Antworten