我可以使用 FILE* 来初始化 C++ ostream 对象吗?

tow*_*owi 5 c++ iostream stream

我可以使用在其他地方打开的吗

FILE* f = ...
Run Code Online (Sandbox Code Playgroud)

初始化某个std::ostream实例的东西?像这样(伪代码):

FILE *f = ...;
std::ostream os;
os./*bind_to_f*/( f );    // HOW?
os << "Hello world" << std::endl;
Run Code Online (Sandbox Code Playgroud)

orl*_*rlp 2

使用 GCC,您只需将现有文件描述符传递给构造函数 ( ref ):

FILE *f = ...;
std::ofstream os(fileno(f));
Run Code Online (Sandbox Code Playgroud)

构造函数:ofstream::ofstream (int fd)

使用文件描述符 fd 创建一个 ofstream 以写入已打开的文件。

  • 事实上,我想我想尝试一下。是的,我也喜欢可移植代码,但在这种情况下,它可能会节省我几百行。有多糟糕?http://xkcd.com/292/;-) (2认同)