我需要在 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/