从 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中文网其他相关文章!