什么是fstream open函数中的第三个参数

时间:2019-05-14 02:40:21

标签: c++ function c++17 fstream

fstream open函数中的第三个参数是什么意思?我尝试在网络上进行搜索,但是没有关于带有三个参数的重载版本的明确解释。 这是来自fstream文件:

void open(const char* _Filename, ios_base::openmode _Mode = ios_base::in | ios_base::out,
    int _Prot = (int) ios_base::_Openprot) { // open a C stream with specified mode

如果在某些情况下该参数对于程序员确实是必需的,还是只是为了实现方便?

2 个答案:

答案 0 :(得分:6)

就C ++标准而言,there is no third parameter。为了实现某些特定于实现的便利,您的实现可能具有默认参数,但是C ++标准没有此类参数。

答案 1 :(得分:1)

第三个参数记录在Microsoft's documentation for the basic_fstream::open() method中:

  

参数

     

_文件名
  要打开的文件的名称。

     

_Mode
  ios_base::openmode中的枚举之一。

     

_Prot
  默认的文件打开保护,等同于_fsopen, _wfsopen中的shflag参数。

  

自变量shflag是一个常量表达式,由Share.h中定义的以下清单常量之一组成。

     

_SH_COMPAT
  为16位应用程序设置兼容模式。

     

_SH_DENYNO
  允许读写访问。

     

_SH_DENYRD
  拒绝对该文件的读取访问。

     

_SH_DENYRW
  拒绝对该文件的读写访问。

     

_SH_DENYWR
  拒绝对该文件的写访问。

std::ios_base::_Openprot的值定义为_SH_DENYNO