我可以使用FILE*来初始化c++ ostream对象吗?
Can I use a FILE* to initialize a C++ ostream object?
可以在其他地方打开吗
FILE* f = ...
东西初始化一些std::ostream
实例?像这样(伪代码):
FILE *f = ...;
std::ostream os;
os./*bind_to_f*/( f ); // HOW?
os << "Hello world" << std::endl;
FILE*
和streams分别是C和c++风格的I/O能力。由于c++库并不总是知道底层C库的实现,所以没有办法做到这一点。另外,考虑一下,如果可以这样做,所有权语义会是什么?
使用GCC,您可以将现有的文件描述符传递给构造函数(ref):
FILE *f = ...;
std::ofstream os(fileno(f));
构造函数:ofstream::ofstream (int fd)使用文件描述符fd创建一个ofstream来写一个已经打开的文件。
如果您要创建一个在内部使用FILE*的streambuf类,您可以这样做。例如,HP OpenVMS似乎有这样一个类
相关文章:
- ostream过载时的缓冲区冲洗
- 需要从 istream 和 ostream 派生 iostream
- "ostream &os"有什么用?
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- C++表达SFINAE和ostream操纵器
- 在抛出 'std::runtime_error' 的实例后终止调用 what(): Filebuf 和 ostream 的 I/O 错误
- oStream 不打印添加两个 valarray 的结果(使用运算符重载)
- 逗号在重载 ostream 和 istream 在结构中分开
- 为什么 Clang std::ostream 写一个 std::istream 无法读取的双精度?
- ostream 运算符<< 为获取 STL 容器而过载,传递 std::string 会破坏它?
- 将 ostream 包装在类中并模板化<<运算符
- 如何在C++中编写 ostream 的向量,它接收所有不同的输出流,如 cout、ostringstream 和 ofs
- 为什么在返回 ostream 类时使用引用?
- 将标准输出重定向到ostream
- boost::interprocess::file_lock 与 std::ostream 一起使用时的错误行为
- 重载 ostream << 运算符,指针作为参数,导致输出上的内存地址
- 无法从好友功能访问类的私有成员?"ostream"不是"std"的成员?
- ostream& operator<< (ostream& (*pf)(ostream&));
- 使用 ostream 变量删除代码重复