Problem: 'Getline' und 0x1A - character



  • Hallo!
    -- folgendes Problem:
    Ich muss ein Textfile einlesen, in dem verschiedenster ASCII-Müll liegt.
    Selten aber doch kommt es mal vor, dass da mal das Zeichen 0x1A vorkommt.

    Wenn ich das File zeilenweise mittels ifstream und getline einlese, wird, sowie bei diesem Zeichen angelangt, EOF gesetzt, obwohl das File noch nicht zu Ende ist.

    Der Information halber hier ein Auszug aus dem File, einige Zeichen (unter anderem 0x1A) sind hier leider nicht darstellbar:

    LhhÁ‚êä
    ‚ê ‚ê!ä
    00001FB37AAA 99990DAA
    Žhh‚ê"ë‚ê#ß‚ê$ú™hhÁ‚ê%é

    Hab auch versucht mit "fgets" einzulesen, selbiges Problem.
    Getestet mit MS-Studio 6.0 und .NET2005.

    Hat jemand eine Idee warum beim Zeichen 0x1A EOF gesetzt wird?? Bzw. wie ich diese Zeichen dennoch einlesen kann?

    Besten Dank,
    Dagobert



  • Hallo,

    Hast du mal versucht binär einzulesen (ios::binary, read)?



  • dagobert2000 schrieb:

    Hat jemand eine Idee warum beim Zeichen 0x1A EOF gesetzt wird?? Bzw. wie ich diese Zeichen dennoch einlesen kann?

    Es scheint, als sei es unter MS-DOS üblich gewesen, das Dateiende in Textdateien durch das Steuerzeichen 26 (=0x1A) anzuzeigen. Man sieht manchmal Binärdateien, die einen durch dieses Zeichen abgetrennten Text-Header haben. Mir fallen grade nur die .VOC-Files ein, die immer mit dem String "Creative Voice File\x1A" angefangen haben. Hat man dann type foo.voc eingegeben, wurde nur dieser Text angezeigt.


Anmelden zum Antworten