7

古いスタイルの iostream ライブラリを使用するかなり古い C++ コードを修正している最中に、次のコンパイルされていないコード行に出くわしました。

::ofstream ofile;
ofile.open("filename", ios::trunc, filebuf::openprot);

次のエラーが表示されます。

error C2039: 'openprot' : is not a member of 'std::basic_filebuf<_Elem,_Traits>'

明らかに、それはもはや存在しないものです。問題は、パラメーターとして何をしたかに関する情報が見つからないためopenprot、新しいものに置き換えることができず、パラメーターを完全に削除することを恐れていることです。

歴史的な C++ の知識を持っている人なら誰でも、これが何をしたか知っていますか?

4

2 に答える 2

8

そのパラメータは、ファイルを開くための保護モードを示します。これは、このIBM Legacy ClassLibraryReferenceに表示されます。

filebuf::openprotfstreamこれは、クラスファミリのコンストラクタとopen関数のパラメータのデフォルトの引数ですprot。これは、ファイルを開く/作成する必要がある保護モードを示します。

ファイルを開くときに使用されるデフォルトの保護モード。

たとえば、システムでは次のよう0644になります。つまり、ファイルが作成された場合、所有者には読み取り/書き込み権限があり、他のすべてのユーザーには読み取り専用があります。

あなたの場合のように、とにかくデフォルトの引数が渡されていたので、削除するだけで安全だと思います。

于 2012-12-19T23:45:36.813 に答える
4

Visual Studio 6.0のドキュメントによるとopenprot、オペレーティングシステムのデフォルトを使用します。

ファイル保護仕様。デフォルトは静的整数filebuf::openprotです。これは、オペレーティングシステムのデフォルト(filebuf::sh_compatMS-DOSの場合)と同等です。

于 2012-12-19T23:31:42.123 に答える