Masalah:
Membina objek fstream terus daripada deskriptor fail POSIX boleh mencabar dalam C .
Penyelesaian:
Libstd
Untuk libstdc , tiada cara standard untuk melakukan ini. Walau bagaimanapun, libstdc menawarkan pembina bukan standard untuk fstream yang mengambil input deskriptor fail.
Contoh:
#include <ext/stdio_filebuf.h> using namespace std; int main() { int posix_handle = open("file.txt", O_RDONLY); // Open a file with POSIX handle __gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, ios::in); // Create stdio_filebuf from POSIX handle ifstream ifs(&filebuf); // Create ifstream from stdio_filebuf // Read from the file }
Microsoft Visual C
Microsoft Visual C juga menyediakan pembina bukan standard untuk ifstream yang menerima FAIL penunjuk. Anda boleh menghubungi _fdopen untuk mendapatkan FAIL daripada deskriptor fail POSIX.
Contoh:
#include <cstdio> #include <fstream> using namespace std; FILE *_file = fopen("file.txt", "r"); // Open a file with C file handle ifstream ifs(_fdopen(_fileno(_file), "r")); // Create ifstream from FILE* // Read from the file
Nota:
Ini bukan -pembina standard mungkin tidak tersedia dalam semua pelaksanaan C. Adalah disyorkan untuk menyemak dokumentasi untuk pelaksanaan khusus anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membina C fstream daripada Deskriptor Fail POSIX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!