Zeilen einer Datei zählen



  • Ich habe gerade total die Denkblockade...

    Wie kann ich die Anzahl der Zeilen einer Datei zählen?

    Die Suche hat mir da keider nicht weitergeholfen...

    Danke im Voraus, Manuel. 🙂



  • mit ReadString die Datei Zeile für Zeile einlesen bis EOF und dann
    in jeder schleife ne int-Variable incrementieren -> voila!



  • Ich komme mit der CStdioFile Klasse einfach nicht zurecht... 😞



  • warum benutzt du nicht die fstreams? kannste zeilen weise einlesen...



  • fstream method verstehe ich auch nicht...



  • hmm.. da..

    #include <iostream>
    #include <fstream>
    using namespace std;
    int main()
    {
      ifstream dat("datei.txt");//stream zu einer datei erstellen 
    
      char buf[1];
    
      int line=0;//anzahl der zeilen
    
      while(dat.getline(buf,1))/*bis ans ende der datei lesen (1 zeile 1 
      schleifenaufruf)*/
      {
         line ++;//line erhöhen (+1)
      }
    
      cout << "Datei enthält: " << line << " Zeilen" << endl;//Anzahl ausgeben
    
      system("pause");
    
      return 0;
    }
    

    hab ich einfach so ausm kopf aus geschrieben 😃 sollte aber gehen^^

    mfg burnner



  • hehe, alter Poser (ausm kopf...) 😃



  • ??^^ 😃 was Poser?



  • CString filenam = "C:\\datei.txt"; 
        CStdioFile pFile; 
        CString string; 
        pFile.Open(filenam, CFile::modeRead , NULL ); 
        int i=0; 
    
    while(pFile!=EOF)
    {
        pFile.ReadString(string);    
        i++;
    } 
    
    pFile.Close();
    //i enthaelt die Anzahl der Zeilen
    


  • Hat sich nur so lustig angehört.
    hab ich auch gerade ausm kopf getippelt (bin bei der arbeit) und kann die
    Richtigkeit also nicht garantieren *selberpose* 🤡



  • Bei mir ergibt das immer 0...

    using namespace std;
    			ifstream fAnzZeilen("ServerVersionen.ini");
    			char buf[1];
    			int nZeilen = 0;
    			while(fAnzZeilen.getline(buf, 1))
    			{
    				nZeilen ++;
    			}
    			CString strAnzZeilen;
    			strAnzZeilen.Format("%d", nZeilen);
    			MessageBox(strAnzZeilen);
    

    in der "ServerVersionen.ini" steht folgendes:

    [ServerVersionen]
    1=BWM_JN|685.6
    2=HartmannTresore_MR|685.6
    3=Pfennig_HV|685.6
    

    Bzw. gibt es vielleicht sogar eine Funktion, die mir alle Werte der Gruppe [ServerVersionen] aus der INI-Datei ausliest?



  • hmm mach mal ein konsolen programm mit meinem code und teste auch.. vielleicht ist da was anderes falsch..



  • Mein Ziel ist es, alle Einträge der Kategorie [ServerVersionen] in ein List Control zu schreiben. Ich bekomme es nur nicht hin die Einträge alle auszulesen... Einzeln kann ich sie ja auslesen mit GetPrivateProfileString()...



  • CString filenam = "C:\\datei.txt"; 
        CStdioFile pFile; 
        CString string="anfang"; 
        pFile.Open(filenam, CFile::modeRead , NULL ); 
        int i=0; 
    
    while(string!="") 
    { 
        pFile.ReadString(string);  
          if(string!="")
          i++; 
    } 
    
    pFile.Close(); 
    //i enthaelt die Anzahl der Zeilen
    

    ich weiss, ich weiss, das is umstaendlich, probiers aber mal aus, wuerde mich
    interessieren obs geht....
    bzw. haste mehrere Zeilen mit cr`s in der Datei drin?



  • Hallo

    Ellek schrieb:

    Bzw. gibt es vielleicht sogar eine Funktion, die mir alle Werte der Gruppe [ServerVersionen] aus der INI-Datei ausliest?

    aber ja, die gibt es, sie heißt GetPrivateProfileSection:

    http://msdn.microsoft.com/library/en-us/sysinfo/base/getprivateprofilesection.asp

    MfG


Log in to reply