Problem bei der Dateierstellung mit std::fstream
Frage:
Bei Verwendung von std: :fstream für Datei-E/A, beim Versuch, eine Datei zu erstellen, wenn diese noch nicht vorhanden ist, wird die Fehlermeldung „Keine solche Datei oder kein solches Verzeichnis“ angezeigt. Konkret verursacht der folgende Codeausschnitt das Problem:
<code class="cpp">std::fstream my_stream; my_stream.open("my_file_name", std::fstream::binary | std::fstream::in | std::fstream::out); if (!my_stream) std::cout << "error" << strerror(errorno);</code>
Wie kann dieses Problem gelöst werden, um bei Bedarf die Dateierstellung sicherzustellen?
Antwort:
Die Funktion fstream::open() erfordert eine nicht vorhandene Datei, wenn std::fstream::in im Modusargument angegeben ist. Um das Problem zu beheben, entfernen Sie entweder std::fstream::in aus den Modus-Flags oder fügen Sie std::fstream::trunc neben den vorhandenen Flags hinzu.
<code class="cpp">// Remove std::fstream::in std::fstream my_stream; my_stream.open("my_file_name", std::fstream::binary | std::fstream::out); // Add std::fstream::trunc std::fstream my_stream; my_stream.open("my_file_name", std::fstream::binary | std::fstream::in | std::fstream::out | std::fstream::trunc);</code>
Das obige ist der detaillierte Inhalt vonWarum löst „std::fstream::open()' beim Erstellen einer Datei den Fehler „Keine solche Datei oder kein solches Verzeichnis' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!