在c++中实现FILE指针
Implementing FILE pointer in c++
我在我的c++项目中使用C库。对于日志记录,C库要求我定义一个FILE指针来获取日志,即:
extern "C"
{
FILE *pFileStdErr = stderr;
}
这将使日志出现在控制台窗口。
然而,我真正想要的是在我的c++类方法中从C库中捕获日志,即
extern "C"
{
FILE *pFileStdErr = ???;
}
void CMyClass::Log (std::string error)
{
m_myLogger.LogError(error);
}
那么我如何把这些"粘合"在一起呢?
在GNU: fopencookie()
上有一个非标准扩展。这样,您就可以自己定义FILE
的行为。
即使您没有使用GNU,您的环境也可能提供类似的东西。
你可以用pipe函数(在windows上是_pipe)创建一个管道,然后在返回的描述符上使用fdopen来获得一个FILE*指针。然后,您可以将管道的写端设置为库的FILE*指针,并在类中从管道的读端读取。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- Seg Fault Issue C++ (file IO / getline)
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 库接收FILE指针并读取文件时出错
- 如何将从文件上传小部件上传的假脱机文件传递到C file*f指针
- 当查看FILE流的地址时,为什么地址与原始指针的地址大不相同
- 从 FILE* 指针创建流对象
- 带有 malloc 的 FILE 指针的二维数组
- 是否有文件指针 (FILE*) 不指向任何内容
- 在c++中实现FILE指针