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 Class Library Reference中。

filebuf::openprot是/曾经是fstream类族构造函数和open函数参数的默认prot参数,它指示应该使用哪种保护模式打开/创建文件。

打开文件时使用的默认保护模式。

例如,在您的系统上可能是0644,这意味着如果创建了文件,则所有者将具有读/写权限,而其他所有人将具有只读权限。

在您的情况下,无论如何都传递了默认参数,我会说删除它是安全的。

于 2012-12-19T23:45:36.813 回答
4

根据Visual Studio 6.0 文档openprot使用操作系统的默认值:

文件保护规范;默认为静态整数filebuf::openprot,相当于操作系统默认值(filebuf::sh_compat对于 MS-DOS)。

于 2012-12-19T23:31:42.123 回答