从FILE*指针创建fstream对象

Tab*_*med 20 c++ popen ifstream

众所周知的创建fstream对象的方法是:

ifstream fobj("myfile.txt");
Run Code Online (Sandbox Code Playgroud)

即.使用文件名.

但我想使用文件描述符创建一个ifstream对象.

原因:我想使用执行命令_popen(). _popen()将输出返回为FILE*.所以有一个FILE*指针涉及但没有文件名.

Ker*_* SB 5

您不能仅在标准 C++ 中做到这一点,因为 iostreams 和 CI/O 是完全独立且不相关的。但是,您可以编写自己的由 C FILE 流支持iostream。我相信 GCC 带有一个这样的流类作为库扩展。

或者,如果您想要的只是一种包装 C FILE 流的 object-y 方式,您可以为此目的使用唯一指针