Dateien lesen



  • Hallöle...

    ich hab ein problem mit daten einlesen.
    und zwar hab ich 17 verschiedene .txt dateien mit fortlaufenden nummern.
    in den .txt dateien stehen in 64 zeilen lauter zahlen.
    jetzt will ich in einer schleife jede datei nacheinander öffnen und die 1. zeile auslesen, die zahlen in ein array schreiben und danach plotten. dann soll er mir wieder von vorne anfangen und wieder jede datei öffnen aber dann die 2. zeile lesen, die daten in array schreiben usw...
    ich weis jetzt nur nicht wie ich gezielt die einzelnen zeilen für den entsprechenden durchlauf ansprech!

    hab hier mal den c++-code:

    ifstream in;
    
    for	(int u = 1; u<9; u++)
    {
      run = 9902;
      j = 0;
      for	(int w = 0; w<8; w++)
      {
        run = 9902;
        j = 0;
        pad = u + (7 - w) * 8;
    
        while	(1)
        {
          sprintf(runnr,"%d",run);
          strcpy(Entr,"C:/root4.04.02/analyse/Run's/Entries/Entries ");
          strcat(Entr,runnr);
          strcat(Entr,".txt");		
          run = run + 2;
          cout<<Entr<<endl;
    
          in.open(Entr);
    
          if	(!in.good())				
          {
            cout<<"Datei nicht vorhanden !!!"<<endl;
            return 0;
          }
    
          in >> "	" >> "	" >> P[j];   //liest hier nur die 3. spalte ein
    
          in.close();
          j++;
    
      if(strcmp(Entr,"C:/root4.04.02/analyse/Run's/Entries/Entries 9934.txt") == 0)
    	  {
    	    break;
    	  }
        }
    
           c3.cd(pad);
           TGraph *gr = new TGraph(i,T,P);
           gr->SetMinimum(0);
           gr->SetMarkerStyle(3);
           gr->SetMarkerColor(4);
           gr->Draw("ALP");
           c3.Update();
        }
    }
    

    Danke schon mal

    EOF



  • so lange es nicht zu viele daten sind, kannst du ja alle dateien in den speicher laden
    zb in vector<string> lines[ateianzahl]. Dann hast du gleich die zeilen als indizes



  • die n-te zeile direkt ansprechen geht leider nicht. du kannst aber den seek-pointer der datei zwischenspeichern. und beim nächsten öffnen der datei springst du dann einfach an die zwischengespeicherte seek-position.



  • sprintf(runnr,"%d",run); 
    strcpy(Entr,"C:/root4.04.02/analyse/Run's/Entries/Entries "); 
    strcat(Entr,runnr); 
    strcat(Entr,".txt");
    

    das kannst du auch einfacher haben:

    sprintf(Entr,"C:/root4.04.02/analyse/Run's/Entries/Entries %d.txt",run);
    

    😉


Anmelden zum Antworten