escape sequences funktionieren nicht. speziell \n, \t funktioniert allerdings



  • Hallo.

    Ich habe ein Problem mit der escape sequence \n:
    Ich habe zuerst mal folgenden String:

    #define XML_STARTUP		TEXT("<StartupInfo>%s</StartupInfo>\t\n<Errorlog>\n\n</Errorlog>")
    

    Diesen String gebe ich dann in einer Datei aus, mit WriteFile(...)
    Die Ausgabe sieht dann so aus, dass das \t korrekt verarbeitet ist, aber das \n nur als Rechteck dargestellt wird.

    Wenn ich die Ausgabe der Datei hier rein kopiere, dann wird alles richtig aufgelößt. Äußerst seltsam.

    [

    Dierekt aus der Datei kopiert:

    <StartupInfo>log\ErrorLog.txt</StartupInfo>
    <Errorlog>

    </Errorlog>

    ] richtig dargestellt, aber in der Datei nicht!!!
    Bitte um Hilfe.

    Gruß
    Alex



  • BS? Für Windows brauchst du \r\n



  • ...oder musst die Datei im Textmodus öffnen...



  • Hallo, ich mach das jetzt anders, geht aber immer noch nicht.

    BS ist Windows. Das TEXT("") Makro gibs doch nur unter Windows!?

    Ich öffne jetzt die Datei mittels eines wofstream Objektes, und zwar binary, das sieht dann so aus:

    ...
    #define XML_STARTUP		TEXT("<StartupInfo>%s</StartupInfo>\t\n<Errorlog>\n\n</Errorlog>")
    
    ...
    int len = wsprintf(buffer, XML_STARTUP, m_logFile[m_iFileId]->szCompFileName);
    
    OpenLogFile(FILE_WRITE);
    m_logFile[m_iFileId]->pFileOut->write(buffer, len);
    CloseLogFile();
    

    Also:
    In buffer kommt zuerst mal der String von oben mit dem kompletten Datei Namen.
    Zurückgegeben wird die Länge des Geschriebenen.
    Dann kommt meine Funktion OpenLogFile mit einem entsprechenden flag für Lese- oder Schreibzugriff. Geöffent wird die Datei, wie schon gesagt, mit

    m_logFile[m_iFileId]->pFileOut->open(m_logFile[m_iFileId]->szCompFileName,ios_base::binary );
    

    und das bedeutet soviel wie

    pWofStream->open(TEXT("fileName"),ios_base::binary );
    

    Und danach schreib ich dann einfach nur noch in die Datei.

    Das Ergebnis ist das gleiche. Nämlich, \n oder \r wird igrnoriert, \t jedoch nicht. \n und \r wird mit einem Recheck ersetzt, so als ob das Zeichen nicht im Zeichensatz vorhanden wäre.

    Was kann ich da machen?

    Gruß
    Alex



  • Hallo nochmal.

    Ich habs jetzt. Das

    ios_base::binary
    

    muss weg. Dann geht es.

    Danke nochmal und Gruß
    Alex


Anmelden zum Antworten