1

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

如果它使用 iostreams,这将是一个简单的更新,但事实并非如此。

FILE*是否有任何用于 I/O 的 C 或 C++ 库支持不同类型的流但与 C 的流函数源兼容或大部分源兼容?

如果源兼容性要求太高,我会选择“能够用 Perl 脚本进行搜索和替换”。 fprintf并且fscanf似乎是这里的主要障碍;我还没有找到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's 语义的复杂性(因为我有很多很多需要的fscanf调用fprintf更新)。像这样的东西会起作用,除了我找不到类似的东西istream_scanf

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

0 回答 0