首页 > 后端开发 > C++ > 如何从 C std::fstream 对象获取 FILE* 句柄?

如何从 C std::fstream 对象获取 FILE* 句柄?

DDD
发布: 2024-12-22 14:08:10
原创
831 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板