FILE / fopen I / O的灵活,兼容的替代方案

时间:2012-06-22 17:52:29

标签: c++ file-io iostream fopen

我有一堆使用C风格文件I / O(使用FILE*流,fprintffscanf等)的遗留代码,我想要更新操作其他数据源(例如,从网上下载或发布到网上,或从自定义数据传输电缆上下载)。

如果它使用iostreams,这将是一个简单的更新,但它没有。

是否有支持不同类型流的I / O的C或C ++库,但它们与源代码兼容,或者与C的FILE*流函数大部分源兼容?

如果源代码兼容性太大而无法提问,我会满足于“能够使用Perl脚本进行搜索和替换”。 fprintffscanf似乎是这里的主要障碍;我没有找到任何iostream兼容的版本。

我正在寻找一种适用于Windows和Linux的解决方案。

示例

作为一个简单的例子,我有如下代码:

FILE *input = fopen(filename, "rt");
fscanf(input, "%d,%d,%d,%f", &f_id, &f_units, &h_index, &h_default);
fclose(input);

我想更新它以处理格式相同但可能来自其他来源的数据,而不必担心如何自己复制fscanf语义的复杂性(因为我有需要更新的许多fscanffprintf次调用)。这样的东西可以工作,除了我找不到像istream_scanf这样的东西:

std::istream *input = make_http_istream(url);
istream_scanf(*input, &f_id, &f_units, &h_index, &h_default);
delete input;

0 个答案:

没有答案