ifstream in Puffer einlesen



  • Hallo,

    ich möchte blockweise Zeichen aus einer Textdatei verarbeiten. Dazu öffne ich eine vorhandene Datei und setze den Datei-Lesezeiger auf den Dateianfang:

    inputFile.open(fileName, std::ios::in);
    inputFile.seekg(0, std::ios::end);

    dann intitalisiere ich einen Puffer und lese einen Datenblock ein:

    static const int BUFFER_SIZE = 512; // Puffergroesse 512 Zeichen
    char buffer[BUFFER_SIZE]; // Puffer anlegen
    inputFile.read(buffer, bufferSize); // Date lesen, Puffer füllen

    /** Hier kommt die Pufferverarbeitung **/

    inputFile.read(buffer, bufferSize); // Neuen Datenblock einlesen

    Das funktioniert solange bis man an das Dateiende kommt. Dann liest "read" soviele Zeichen in den Puffer bis das Dateiende erreicht ist, d.h. der Puffer von 512 Zeichen ist z.B. mit nur 3 Zeichen gefüllt.

    Frage: Wie kann ich beim blockweisen lesen erkennen, wieviele verbleibende Zeichen eingelesen sind?

    Gruß,
    Bitshift



  • Mit der gcount-Methode.



  • MFK schrieb:

    Mit der gcount-Methode.

    Danke MFK! Das war genau was ich gesucht habe...


  • Administrator

    Nur als Tipp:
    Es hat ca. 20 Minuten benötigt, bis du die Antwort hattest (Zeit von deinem ersten Post bis zu deinem zweiten Post). Wahrscheinlich wärst du etwas schneller, wenn du in einer C++ Referenz nachschauen würdest:
    http://www.cplusplus.com/reference/

    Die Referenz ist zwar nicht ganz vollständig, aber das wichtigste und meist verwendeste wird abgedeckt 😉

    Grüssli



  • Da kann ich Dravere nur zustimmen, cplusplus.com finde ich wirklich sehr praktisch. Auch zur STL kann man sich da sehr gut informieren.

    Ach ja, und damit du nicht alles fett schreiben musst und Code trotzdem übersichtlich darstellen kannst, gibts hier C++-Tags (erste Schaltfläche oben links) - also einfach

    hier steht der Code
    

Anmelden zum Antworten