從std::fstream 檢索FILE* 句柄
在C 程式設計領域,您可能會尋求利用需要FILE 句柄的C 函數。但是,標準 C 函式庫提供了 std::fstream 類別用於檔案輸入和輸出。因此,出現了一個問題:是否有跨平台方法從現有 std::fstream 物件派生 FILE 句柄?
限制
遺憾的是,答案是否定的。 std::fstream 類別沒有義務在內部使用 FILE*。即使您成功從 std::fstream 中提取底層檔案描述符並手動建構 FILE 對象,由於多個緩衝物件嘗試寫入相同檔案描述符,隨後也會導致複雜化。
替代考慮因素
與其追求轉換為 FILE*,不如質疑尋求此轉換背後的原因。是否有其他方法可以在沒有此特定要求的情況下完成您所需的功能?
潛在方法(不建議)
如果出於某種原因,轉換仍然被認為是必要的,您可以考慮探索 funopen()。但請注意,這種方法不是 POSIX API,其在不同作業系統之間的可移植性是不確定的。此外,funopen() 的實作因平台而異。
以上是如何從 C std::fstream 物件取得 FILE* 句柄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!