tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
1138
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    bastionmancher bastionmancher ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    51
    Hallo,
    ich möchte in einem Programm eine Datei einlesen und die Anzahl der Zeilen herausfinden. Gibt es da irgendeine Möglichkeit. Die Zeilen haben immer unterschiedliche, unbekannte Längen.
    Ich hab gedacht, dass es vielleicht irgendeine Möglichkeit gibt das über find() zu machen. Vielleicht gibts aber sogar eine Funktion find_number_of()
    Bin dankbar für jede Hilfe
    bastionmancher
     

  2. #2
    SuperSonik SuperSonik ist offline Mitglied Gold
    Registriert seit
    May 2004
    Ort
    Wassenberg (NRW)
    Beiträge
    120
    Du kannst beim einlesen die Anzahl der "\n" bzw. "\r\n" unter Windows zählen.
    Gruß,
    SuperSonik
     

  3. #3
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Es gibt sicherlich mehrere Möglichkeiten.

    Bsp. 1:
    Code cpp:
    1
    2
    3
    4
    5
    6
    
    ifstream file(...);
     
    string zeile;
    int anzahl = 0;
     
    while(getline(file, zeile)) anzahl++;

    Bsp. 2
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    #include <algorithm>
    #include <iomanip>
    #include <iterator>
    ...
     
    ifstream file(...);
     
    file >> noskipws;
    cout << "Zeilen: " << count(istream_iterator<char>(file),
                                istream_iterator<char>(),
                                '\n') << endl;
    Gruß
    Geändert von deepthroat (09.06.07 um 15:37 Uhr)
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  4. #4
    bastionmancher bastionmancher ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    51
    Ich finde deine erste Möglichkeit eigentlich am elegantesten deepthroat. Aber stoppt denn die while Schleife automatisch bei eof? Oder müsste man das irgendwie so machen:
    Code :
    1
    
    while(getline(file, zeile)!=EOF)
    bastionmancher
     

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von bastionmancher Beitrag anzeigen
    Ich finde deine erste Möglichkeit eigentlich am elegantesten deepthroat. Aber stoppt denn die while Schleife automatisch bei eof? Oder müsste man das irgendwie so machen:
    Code :
    1
    
    while(getline(file, zeile)!=EOF)
    bastionmancher
    Nein. Man muß (eigentlich) niemals mit den iostream Klassen explizit auf EOF prüfen. Die Eingabe- und Ausgabe-Operatoren der Stream Klassen geben immer den Streamzustand zurück - der ist nur "true" wenn weder EOF, noch irgend ein anderer Fehler aufgetreten ist. Wenn man C++ Code sieht der explizit auf EOF prüft, dann hat derjenige vermutlich nicht verstanden wie man die iostream Klassen verwenden sollte.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    bastionmancher bastionmancher ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    51
    okay. Vielen dank für deine Hilfe!
    bastionmancher
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 25.09.09, 17:01
  2. Antworten: 7
    Letzter Beitrag: 29.10.08, 20:54
  3. alle zeilen einer datei einlesen
    Von lambofgod im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 28.05.07, 20:57
  4. Anzahl der Datensätze einer Datei bestimmen
    Von Katzenbauer im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 17.06.04, 19:09
  5. Antworten: 2
    Letzter Beitrag: 11.06.04, 10:10