Problem:
Das Konstruieren eines Fstream-Objekts direkt aus einem POSIX-Dateideskriptor kann sein herausfordernd in C .
Lösung:
Libstd
Für libstdc gibt es keine Standardmethode, dies zu tun. Allerdings bietet libstdc einen nicht standardmäßigen Konstruktor für fstream, der eine Dateideskriptoreingabe entgegennimmt.
Beispiel:
#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 stellt außerdem einen nicht standardmäßigen Konstruktor für ifstream bereit, der einen FILE-Zeiger akzeptiert. Sie können _fdopen aufrufen, um die DATEI aus dem POSIX-Dateideskriptor abzurufen.
Beispiel:
#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
Hinweis:
Diese nicht -Standardkonstruktoren sind möglicherweise nicht in allen C-Implementierungen verfügbar. Es wird empfohlen, die Dokumentation für Ihre spezifische Implementierung zu überprüfen.
Das obige ist der detaillierte Inhalt vonWie kann ich einen C-Fstream aus einem POSIX-Dateideskriptor erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!