首頁 > 後端開發 > C++ > 如何從 C std::fstream 物件取得 FILE* 句柄?

如何從 C std::fstream 物件取得 FILE* 句柄?

DDD
發布: 2024-12-22 14:08:10
原創
830 人瀏覽過

How Can I Obtain a FILE* Handle from a C   std::fstream Object?

從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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板