Mengapa `std::fstream` Saya Gagal Mencipta Fail?

Barbara Streisand
Lepaskan: 2024-10-29 23:28:29
asal
568 orang telah melayarinya

 Why Does My `std::fstream` Fail to Create a File?

Pemerhatian Penciptaan Fail dalam std::fstream

Apabila cuba memanipulasi fail menggunakan perpustakaan C IO, std::fstream menawarkan akses fail yang mudah dan keupayaan input/output . Walau bagaimanapun, menghadapi masalah dengan penciptaan fail boleh menghalang kemajuan.

Satu perangkap biasa terletak pada penggunaan bendera yang salah semasa membuka fail. Mari kita pertimbangkan coretan berikut:

<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>
Salin selepas log masuk

Dalam kod ini, percubaan dibuat untuk mencipta fail bernama "my_file_name" untuk menulis. Walau bagaimanapun, kemasukan std::fstream::in dalam hujah mod mempunyai akibat yang tidak diingini:

<code class="cpp">// In effect, the above code is equivalent to:
my_stream.open("my_file_name", std::fstream::binary | std::fstream::in);</code>
Salin selepas log masuk

Bendera std::fstream::in secara eksplisit menyatakan keperluan untuk fail sedia ada, yang bercanggah dengan niat untuk mencipta fail yang berpotensi tidak wujud.

Untuk membetulkan isu ini, beberapa penyelesaian tersedia:

Penyelesaian 1: Alih keluar std::fstream::in

Cukup keluarkan bendera std::fstream::in daripada hujah mod. Ini akan membenarkan strim mencipta fail jika ia tidak wujud:

<code class="cpp">my_stream.open("my_file_name", std::fstream::binary | std::fstream::out);</code>
Salin selepas log masuk

Penyelesaian 2: Tentukan std::fstream::out dan std::fstream::trunc

Jika fail sudah wujud, anda mungkin mahu memotongnya dan bukannya menambahkannya. Untuk mencapai matlamat ini, tambahkan std::fstream::trunc pada hujah mod:

<code class="cpp">my_stream.open("my_file_name", std::fstream::binary | std::fstream::out | std::fstream::trunc);</code>
Salin selepas log masuk

Memahami penggunaan bendera yang sesuai dan implikasinya adalah penting untuk menguruskan fail dengan berkesan dengan std::fstream.

Atas ialah kandungan terperinci Mengapa `std::fstream` Saya Gagal Mencipta Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!