Что означает третий параметр в открытой функции fstream - PullRequest
1 голос

Что означает третий параметр в открытой функции fstream?Я пытался найти его в Интернете, но нет четкого объяснения перегруженных версий с тремя параметрами.Это из файла 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 ]

6 голосов
/ 14 мая 2019

Что касается стандарта C ++, то третьего параметра нет. Ваша реализация может иметь параметр по умолчанию для удобства реализации, но стандарт C ++ не имеет такого параметра.

1 голос
/ 14 мая 2019

Третий параметр задокументирован в Документация Microsoft для метода basic_fstream::open() :

Параметры

_Filename
Имя открываемого файла.

_Mode
Одно из перечислений в ios_base :: openmode .

_Prot
Стандартная защита при открытии файла, эквивалентная параметру shflag в _fsopen, _wfsopen .

Аргумент shflag - это константное выражение, состоящее из одной из следующих констант манифеста, определенных в Share.h.

_SH_COMPAT
Устанавливает режим совместимости для 16-разрядных приложений.

_SH_DENYNO
Разрешает чтение и запись.

_SH_DENYRD
Запрещает доступ на чтение к файлу.

_SH_DENYRW
Запрещает доступ на чтение и запись к файлу.

_SH_DENYWR
Запрещает доступ на запись в файл.

Значение std::ios_base::_Openprot определяется как _SH_DENYNO.

...