问题:
直接从 POSIX 文件描述符构造 fstream 对象可以是C 语言具有挑战性.
解决方案:
Libstd
对于 libstdc ,没有标准方法可以做到这一点。但是,libstdc 为 fstream 提供了一个非标准构造函数,它接受文件描述符输入。
示例:
#include <ext/stdio_filebuf.h> using namespace std; int main() { int posix_handle = open("file.txt", O_RDONLY); // Open a file with POSIX handle __gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, ios::in); // Create stdio_filebuf from POSIX handle ifstream ifs(&filebuf); // Create ifstream from stdio_filebuf // Read from the file }
Microsoft Visual C
Microsoft Visual C 还为 ifstream 提供了一个接受 FILE 指针的非标准构造函数。您可以调用 _fdopen 从 POSIX 文件描述符中获取 FILE。
示例:
#include <cstdio> #include <fstream> using namespace std; FILE *_file = fopen("file.txt", "r"); // Open a file with C file handle ifstream ifs(_fdopen(_fileno(_file), "r")); // Create ifstream from FILE* // Read from the file
注意:
这些非- 标准构造函数可能不适用于所有 C 实现。建议您查看文档以了解您的具体实现。
以上是如何从 POSIX 文件描述符构造 C fstream?的详细内容。更多信息请关注PHP中文网其他相关文章!