2016-04-20 6 views
2

Es ist sehr klar, dass es keine gute Praxis ist, iostream/fstream mit stdio und C-style I/O-Handhabung zu mischen.Gibt es technische Gefahren beim Mischen von fstream und stdio?

Drucken eine Zeile mit printf(...) und ein weiteres mit std:cout << ... oder eine Datei mit FILE* Lesen und später mit ofstream schreiben, ist hässlich, Verwirrung stiften kann und nur Ärger bringen.

Ist der einzige Grund, warum solche Praxis im Grunde genommen nur ein Argument der Stilistik/Lesbarkeit ist verpönt, oder hat es tiefere technische Gründe?

Ich frage dies, weil ich mmap in einem kleinen Teil meines Codes, einige Low-Level-Register Handhabung. mmap arbeitet mit c-style Dateideskriptoren. Im Rest des Codes möchte ich jedoch die C++ - Stream-Route für die Verarbeitung von Dateien verwenden.

Antwort

3

Die technische Gefahr ist eine verminderte Leistung, da die beiden Ausgabemethoden nicht unabhängig voneinander gepuffert werden können. Es gibt ios_base::sync_with_stdio(bool), um anzuzeigen, dass eine solche Synchronisation nicht benötigt wird (zum Beispiel, weil <cstdio> nicht verwendet wird), aber der Standard ist langsam und korrekt.

Verwandte Themen