Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membina C fstream daripada Deskriptor Fail POSIX?

Bagaimanakah Saya Boleh Membina C fstream daripada Deskriptor Fail POSIX?

Mary-Kate Olsen
Lepaskan: 2024-12-14 11:58:13
asal
458 orang telah melayarinya

How Can I Construct a C   fstream from a POSIX File Descriptor?

Membina C fstream daripada Deskriptor Fail POSIX

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

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

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!

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