問題:
直接從 POSIX 檔案描述子建構 fstream 物件可以是C語言具有挑戰性.
解決方案:
Libstd
對於libstdc ,沒有標準方法可以做到這一點。但是,libstdc 為 fstream 提供了一個非標準建構函數,它接受檔案描述符輸入。
範例:
#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 也為ifstream 提供了一個接受FILE 指標的非標準構造函數。您可以呼叫 _fdopen 從 POSIX 檔案描述符中取得 FILE。
範例:
#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
注意:
這些非- 標準建構函式可能不適用於所有 C 實作。建議您查看文件以了解您的具體實現。
以上是如何從 POSIX 檔案描述符構造 C fstream?的詳細內容。更多資訊請關注PHP中文網其他相關文章!