Mengambil semula FILE* Handle dari std::fstream
Dalam bidang pengaturcaraan C, mungkin timbul bahawa anda berusaha untuk menggunakan fungsi C yang memerlukan pemegang FILE. Walau bagaimanapun, perpustakaan C standard menyediakan kelas std::fstream untuk input dan output fail. Oleh itu, timbul persoalan: adakah terdapat pendekatan merentas platform untuk mendapatkan pemegang FAIL daripada objek std::fstream yang sedia ada?
Keterbatasan
Malangnya, jawapannya adalah negatif. Kelas std::fstream tidak diwajibkan untuk menggunakan FILE* secara dalaman. Walaupun anda berjaya mengekstrak deskriptor fail asas daripada std::fstream dan membina objek FILE secara manual, ia akan membawa kepada komplikasi akibat berbilang objek buffer yang cuba menulis pada deskriptor fail yang sama.
Pertimbangan Alternatif
Daripada meneruskan penukaran kepada FAIL*, adalah berfaedah untuk mempersoalkan sebab anda di sebalik mencari penukaran ini. Adakah terdapat kaedah lain untuk mencapai kefungsian yang anda inginkan tanpa keperluan khusus ini?
Pendekatan Potensi (Tidak Disyorkan)
Jika, atas apa jua sebab, penukaran masih dianggap penting , anda boleh mempertimbangkan untuk meneroka funopen(). Walau bagaimanapun, ambil perhatian bahawa pendekatan ini bukan API POSIX dan kemudahalihannya merentas sistem pengendalian yang berbeza tidak pasti. Selain itu, pelaksanaan funopen() berbeza-beza merentas platform.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Pemegang FAIL* daripada Objek C std::fstream?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!