2016-06-01 11 views
1

Ich habe eine Anwendung, die mehrere Dateien je nach der spezifischen Konfiguration schreibt. Manchmal benutzen wir den normalen Standard: ostream, manchmal schreiben wir mit opencv oder mit boost.Gibt es eine allgemeine Möglichkeit, Datei Schreibfehler mit C++ zu erkennen?

Für std: ostream rdstate() -Funktion. Meiner Meinung nach wäre die beste Lösung, wenn ich eine allgemeine Methode (z. B. von der OS) verwenden könnte, die für jeden Mechanismus funktioniert. Gibt es so etwas?

Wenn nicht, kann mich jemand auf die Dokumentation über Schecks ähnlich wie rdstate() verweisen? Dank

Update:
Ich schreibe die Dateien mit den Funktionen:
OpenCV: cv::VideoWriter << image
boost: boost::iostreams::file_sink->write

ich einen Weg, um die geschriebenen Daten für den bosst Fall zu überprüfen gefunden. Die write Funktion gibt die Anzahl der geschriebenen Bytes zurück, und ich kann dies mit den erwarteten Bytes vergleichen. Für den openCV-Fall habe ich GetFileAttributesEx die Dateigröße bestimmen und prüfen, ob das erhöht. Ist das ein guter Weg?

+0

Suchen Sie eine Methode, die auf allen Betriebssystemen funktioniert? – Ian

+0

Nein, ich brauche nur Windows – Valerie

+0

Eine allgemeine Möglichkeit zur Überprüfung auf Fehler besteht darin, GetLastError() aufzurufen. – Ian

Antwort

0

Wenn der zugrunde liegende Betriebssystemaufruf, der in eine Datei schreibt, eine Fehleranzeige zurückgibt, würde ich erwarten, dass std::ostream in einem fail() Zustand endet.

Sie müssen nur sorgfältig den Status der std::ostream überprüfen, einschließlich nach einer expliziten close(), da ein Schreibfehler beim Schreiben der letzten Bits gepufferter Daten aufgetreten sein könnte.

+1

Sie achten' std :: ostream' zu sein ein fehlgeschlagener Status auch nach einem fehlgeschlagenen Boost oder opencv schreiben? – Antonio

+0

Ich habe keine Kenntnis von beiden Rahmen, also kann ich das nicht beantworten. –

+0

Leider hilft das mir nicht, denn soweit ich weiß, weder opencv noch boost std :: ostreams – Valerie

Verwandte Themen