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

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

Barbara Streisand
發布: 2024-12-17 04:02:25
原創
997 人瀏覽過

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

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

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