2017-06-26 26 views
0

以前のプロジェクトのAPIを再設計しようとしていますが、これはC言語で書かれたもので、書かれたアプリケーションで使用することができますC++言語で書かれています。CとC++の違い(lseek())

私はテーブルを追うためにC言語lseek()で使用していた、などのページ 私の質問ですが、それはまだ以下のサンプルコードのように、私はそれを使用している方法C++でlseek()を使用しても大丈夫です:

/* Read page data from an offset. It assumes that pagenum is zero-indexed*/ 
lseek(bq.unixfd, PAGE_SIZE + (PAGE_SIZE * bq.pagenum), SEEK_SET); 

+0

最近のC++では、クロスプラットフォームなので、おそらく 'std :: ifstream'を使用します。しかし、あなたが提供していない特定のニーズがあるかもしれないので、OS提供のAPIが最良の選択かもしれません。 – tambre

+1

オフセットである中間の引数は、私はしばしば32ビットの値で4GBを超えるファイルで動作しないという問題がありました。だから私は 'lseek64'を調べるでしょう。 C++のためにlseekより優れたものがあるかどうかはわかりません。 – ron

答えて

1

たくさんの感謝は、C++標準では明示的にC++でC標準ライブラリを使用することができます:

17.2 C標準ライブラリ[LIB rary.c]
C++標準ライブラリでは、C標準ライブラリの機能を利用できるようになり、静的型の安全性を確保するために に適切に調整されています。

ここで、lseek関数はC標準ではなく、POSIX.1関数で定義されています。とにかくそれをサポートするシステムでは、それは標準Cライブラリに含まれており、C++プログラムでは標準 C関数とまったく同じように使用できます。

あなたの要件(移植性、パフォーマンス、ユースケースなど)をもっと知らなくても、低レベルのIO機能を使用するかどうか、またはC++ストリーム。

関連する問題