C++,协作 FILE* 和 std 流

标签 c++ c stream

我需要在 C++ 项目中使用现有的 C 库。 我的问题是 C 现有库使用 FILE* 作为流,是否有一种符合标准的方式来使用 FILE* 流来放入或从 C++ 流中获取?

我尝试在 C++11 标准中寻找 FILE*,但它只在很少的例子中出现。

 -

编辑,例子。
我们有一个写入文件*的函数:
fputs(char const*, 文件*)

我们有一个输出 C++ 流:
自动 strm = std::cout;

我能否以符合标准的方式使用 fputs 写入 strm?

您还可以考虑一个类似的输入示例,其中包含从 FILE* 和输入 C++ 流读取的 C 函数。

最佳答案

检查这个答案,

https://stackoverflow.com/a/5253726/1807864

#include <cstdio>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
ofstream ofs("test.txt");
ofs << "Writing to a basic_ofstream object..." << endl;
ofs.close();

int posix_handle = ::_fileno(::fopen("test.txt", "r"));

ifstream ifs(::_fdopen(posix_handle, "r")); // 1

string line;
getline(ifs, line);
ifs.close();
cout << "line: " << line << endl;
return 0;
}

关于C++,协作 FILE* 和 std 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17195279/

相关文章:

c - 棘手的C函数测试知识静态、全局、局部变量和指针

c - 匹配具有相同字母的单词

c - GCC - 没有关于带有 -O0 的未初始化数组的警告

c++ - 在 C++ 中对二进制对象进行编码/解码的标准方法

c++ - 用 C 写一个客户端-服务器程序 ... 在一张纸上

.net - 使用 .NET Framework 捕获麦克风音频流

swift - 如何查看写入功能期间发生的特定错误

c - 应用程序在不同机器上的行为不同

c++ - 'TypeInfo<char>(char * )' isn' t defined but worked pre-C++11; what changed, and how can I fix the error?

c++ - 解码 H.264 单个最终单元