2011-10-03 14 views
1

私はC++を勉強していますが、今はファイルを扱うことについて読んでいます。私が読んだとおり、かなり多くの変形があります。 C++でファイルを扱う正しい方法は何ですか? fstream(ifstreamとofstream)を使用していますか?私はfopenがはるかに高速に動作するといういくつかの意見を読んだので、それを使う方が良いですが、C++にはなりません。 ご注意いただきありがとうございます!C++でファイルを操作する適切な方法は何ですか?

+0

'fopen'もC++の一部です(Cサブセットを通して)。 :) – iammilind

+7

XはYよりもずっと速いと言うことにはあまり注意を払わないでください。ほとんどの場合、それは問題ではありませんが、それが起こると、あなた自身の判断を下します。最善の方法は、仕事に適切なツールを使用することです。 –

答えて

3

C++で作業する場合、ifstreamofstreamを使用してください。 FILE*よりはるかに遅くすべきではありませんが、はるかに安全です。

this related questionを参照してください。

+0

なぜ安全ですか?何が安全か? – Hate

+0

'FILE * 'を使うより安全です。たとえば、スコープ外では 'fstream'が自動的に閉じられるので、' close'を呼び出すことを決して忘れることはありません。 –

+0

それは確かにリソースを解放するだけで安全ですか?どのようにしてもFILE *はより速く動作します。 – Hate

0

私はJurajのi/ofstream対FILE *の評価に同意しました。私はメモリマップされたファイルについて言いたかっただけです。 Boost.SpiritClassicでは、あまり知られていない逸品mmap_file_iteratorが呼ばれています:

http://www.boost.org/doc/libs/1_47_0/boost/spirit/home/classic/iterator/file_iterator.hpp

私はあなたが窓やPOSIX環境にいる場合、それはあなたのファイルをメモリマッピングすることを信じて、それがRandomAccessIteratorです、Input/OutputIteratorではなく、

どのような方法が「適切」であるかは、アプリケーションの要件によって異なります。あなたのすべての選択肢を探索し、想像できる限り多くの次元に沿って結果を比較することは、間違いなく良いことです。

関連する問題