從std::fstream 物件取得FILE* 句柄
問題:
問題:問題:
問題:
背景:
這種轉換是可取的,因為某些 C 庫接受 FILE* 句柄作為參數,但某些 C 庫使用 std::fstream作為文件
答案:
不幸的是,沒有直接的跨平台方法從 std::fstream 物件取得 FILE* 句柄。
說明:
的實作std::fstream 不強制要求使用 FILE* 帳號。因此,從 std::fstream 物件中提取檔案描述符並手動建構 FILE 物件可能會導致衝突和不可預測的行為。替代方法:
不要嘗試轉換,而是考慮為什麼需要 FILE 句柄。如果可能,請探索 C 庫中不需要 FILE 句柄的替代方法。 funopen() 函數:作為一個不太推薦的方法,您可以研究 funopen() 函數的使用。這個 BSD 擴充功能允許您透過提供執行實際檔案操作的函數來建立 FILE 物件。透過實現適當的函數,您可以從 FILE 物件中的 std::fstream 物件讀取。然而,這種方法不可移植,也不屬於 POSIX 標準的一部分。以上是如何從 C std::fstream 物件取得 C FILE* 句柄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!