Isu Penciptaan Fail dengan std::fstream
Soalan:
Apabila menggunakan std: :fstream untuk fail I/O, menemui mesej ralat "Tiada fail atau direktori sedemikian" semasa cuba mencipta fail jika ia belum wujud. Khususnya, coretan kod di bawah menyebabkan isu:
<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>
Bagaimanakah isu ini boleh diselesaikan untuk memastikan penciptaan fail apabila perlu?
Jawapan:
Fungsi fstream::open() memerlukan fail yang tidak wujud jika std::fstream::in dinyatakan dalam hujah mod. Untuk menyelesaikan isu ini, sama ada alih keluar std::fstream::in daripada bendera mod atau tambah std::fstream::trunc bersama bendera sedia ada.
<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>
Atas ialah kandungan terperinci Mengapakah `std::fstream::open()` Melemparkan Ralat \'Tiada Fail atau Direktori Sebegitu\' Semasa Mencipta Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!