我正在修复使用旧式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 ++知识的人都知道这件事是做什么的吗?
答案 0 :(得分:6)
该参数表示/表示用于打开文件的保护模式。它出现在IBM Legacy Class Library Reference中。
filebuf::openprot
是fstream
类族构造函数和open
函数'prot
参数的默认参数,它指示文件应该打开的保护模式/用。创建。
打开文件时使用的默认保护模式。
例如,在您的系统上,它可能是0644
,意味着如果创建了文件,则所有者将具有读/写权限,其他所有人都将具有只读权限
在你的情况下,无论如何都会传递默认参数,我会说删除它是安全的。
答案 1 :(得分:4)
根据the Visual Studio 6.0 documentation,openprot
使用操作系统的默认值:
文件保护规范;默认为静态整数
filebuf::openprot
,这相当于操作系统默认值(MS-DOS的filebuf::sh_compat
)。