Filestream endet nach 8KB
-
Hallo,
ich habe gerade den Syntax-Highlighter aus der Boost.Regex-Doku ausprobiert. Soweit hat das auch wunderbar funktioniert. Sobald die Dateien größer werden, wächst die Größe HTML-Datei ja auch stark an.
Das Problem ist, dass ab 8KB (genau 8.192 Bytes) nichts mehr in die Ausgabedatei geschrieben wird.
std::ofstream outputFileStream(outputFileName.c_str()); // ... // outputCode enthält den gesamten Code std::string outputCode = tmpCode.str(); std::ostream_iterator<char, char> outFileIt(outputFileStream); // hier soll das highlighting stattfinden boost::regex_replace(outFileIt, outputCode.begin(), outputCode.end(), e1, format_string, boost::match_default | boost::format_all); // ...aber im outputFileStream landen nur 8.192 Bytes.
Die HTML-Datei bricht dann logischerweise einfach ab:
... <span style='color: #007020; font-weight: bold;'
Kann ich diese 8KB, die in den Stream passen, irgendwie vergrößern? Oder muss ich den Code in 8KB-Blöcke aufteilen und nacheinander in die Datei schreiben?
Vielen Dank im Voraus,
Amgon
-
[cpp]std::ofstream outputFileStream(outputFileName.c_str());
std::ofstream outputFileStream(outputFileName.c_str(),ios::binary); [/cpp]
This is what you need, but I was suprised, that nobody helped you !
Ich wollte auch mal was auf Englisch schreiben
-
Works great, thanks.
Was verändert sich denn, wenn man die Datei im Binärmodus öffnet?
-
ich weiß nur, dass beim schreiben aus einem Zeilenumbruch ein Kasten wird.
EDIT: macht aber kein großen Unterschied, weil der eh als Umbruch gewertet wird.
-
Da werden überhaupt keine Kasten aus irgendwas.
Unter Windows ist der Unterschied: "binär" heisst 1:1 die Bytes in die Datei schreiben wie man sie übergibt, "text" (bzw. "nicht binär") heisst dass "\n" in "\r\n" übersetzt wird.
Beim Lesen umgekehrt: es wird ohne "binär" einfach "\r\n" in "\n" übersetzt.Unter Linux/BSD/... ist der Unterschied: es gibt keinen Unterschied (beides 1:1).