Wenn der Versuch, eine Datei mit ifstream zu öffnen, fehlschlägt, ist es oft wünschenswert, den Grund für den Fehler herauszufinden. So geht's:
Jeder Systemaufruf, der fehlschlägt, aktualisiert den globalen errno-Wert. Dieser Wert kann verwendet werden, um weitere Informationen über den Fehler zu erhalten:
ifstream f; f.open(fileName); if (f.fail()) { cerr << "Error: " << strerror(errno); }
Beachten Sie, dass strerror die Fehlermeldung als Zeichenfolge bereitstellt.
Wenn Bei Verwendung dieser Methode in einer Multithread-Anwendung ist es wichtig, die Möglichkeit zu berücksichtigen, dass andere Systemaufrufe die Fehlernummer zwischen f.open und errno ändern Abruf.
Auf POSIX-Systemen ist errno threadlokal, was bedeutet, dass Änderungen, die in einem Thread daran vorgenommen werden, keine Auswirkungen auf andere Threads haben. Dies ist nicht unbedingt auf allen Systemen der Fall.
Auf den ersten Blick scheint e.what() ein besserer Ansatz zu sein, da es idiomatischer ist C . Die von dieser Funktion zurückgegebene Zeichenfolge ist jedoch implementierungsspezifisch und liefert möglicherweise nicht immer nützliche Informationen über den Fehler.
Das obige ist der detaillierte Inhalt vonWie kann ich Fehlermeldungen von fehlgeschlagenen „ifstream'-Öffnungen erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!