C スタイルのファイル I/O (FILE*
ストリーム、fprintf
、fscanf
などを使用) を使用するレガシー コードがたくさんあります。これらを更新して、他のデータ ソース (Web からのダウンロードや Web への投稿など) から操作できるようにしたいと考えています。またはカスタムのデータ転送ケーブルとの間)。
iostream を使用していれば、これは簡単に更新できますが、そうではありません。
FILE*
さまざまな種類のストリームをサポートしているが、C のストリーム関数とソース互換性があるか、ほとんどソース互換性がある I/O 用の 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
たくさんあるため)更新中)。次のようなものを見つけることができなかったことを除いて、次のようなものが機能します。fscanf
fprintf
istream_scanf
std::istream *input = make_http_istream(url);
istream_scanf(*input, &f_id, &f_units, &h_index, &h_default);
delete input;