Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648

Вызов функции потокового ввода-вывода со всеми параметрами

27.11.2017, 08:55. Показов 1689. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.

В классе fstream есть функция
C++
1
void open(const char *fileName, int mode, int protection);
С первыми двумя параметрами недостатка в информации нет. Просто море!
Интересует третий параметр (protection). Вернее, пример с его использованием и возможные принимаемые им значения.
В книге В.В. Подбельского "Язык C++" стр. 435 говорится, что "...он определяет защиту и достаточно редко используется. Точнее он устанавливается по умолчанию и умалчиваемое значение обычно устраивает программиста." Изредка в сети встречается рекомендация изучать руководство конкретного компилятора. В большинстве случаев информации об этом параметре никакой.
Просмотрев возможные конструкторы класса fstream (8 шт) я нашёл и среди них интересующий меня третий параметр int _Prot. Где подсмотреть какие значения этот _Prot может принимать, примеров нигде не нашёл. Меня интересует значение _Prot соответствующее разрешению общего доступа к открытому уже файлу из других приложений.
(Работаю в VS2010)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2017, 08:55
Ответы с готовыми решениями:

Функции потокового ввода/вывода
Подскажите, пожалуйста, чем отличается fwrite/fread от fprintf/fscanf?

Перегрузка потокового ввода-вывода
Доброго времени суток!!! Возникла такая проблема: необходимо сделать перегрузку операций << и >>. Вот что у меня есть: ...

Библиотека потокового ввода/вывода
А верно ли, что данная библиотека является вещью абсолютно бесполезной для Windows-программирования и в настояящее время используется...

9
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.11.2017, 09:19
В стандартном fstream нет такого. Здесь смотри: https://msdn.microsoft.com/en-... s.60).aspx
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
27.11.2017, 12:22  [ТС]
nmcf,fstream Visual Studio 6 видимо отличается от fstream VS 2010. В указанной ссылке нашёл радостную информацию: режим общего доступа является умолчательным! Надеюсь это сохранилось и в VS 2010. Вот бы такую же ссылочку но для моей студии.

Добавлено через 19 минут
C++
1
2
3
        ofstream out(sFName, ios::binary, 64);
        out.write((char*)&buf, sizeof(buf));        // Записываем в файл байтовый массив buf
        out.close();                                // Сохраняем файл
здесь 64 dec это значение по умолчанию (0100 0000).
Всё работает. Но где найти инфу про третий аргумент, то есть про это число 64 (для моей студии)?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.11.2017, 14:56
Поставь курсор на эту функцию и нажми F1. Должна открыться online-справка.
Там сказано, что этот параметр соответствует shflag: https://msdn.microsoft.com/en-... .140).aspx

Добавлено через 43 секунды
2010 - древняя. Бери 2013 и выше.
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
27.11.2017, 15:07  [ТС]
nmcf, так я так и сделал, но не нашёл там перечисления констант нужных мне. Подставляю _SH_COMPAT, например, а студия ругается - говорит что не знает такой константы. Подскажите пожалуйста, что прицепить к проекту чтобы
Цитата Сообщение от nmcf Посмотреть сообщение
shflag
распознавались?

после посещения указанной ссылки вот только это и добавилось:
C++
1
ofstream out(sFName, ios::binary, ios_base::_Openprot);
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.11.2017, 15:12
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

Потому что они определены в другом месте. Там же есть пример.
C++
1
#include <share.h>
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
27.11.2017, 15:34  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
#include <share.h>
не помогает.
C++
1
ofstream out(sFName, ios::binary, _SH_COMPAT);
всё равно не видит константу _SH_COMPAT. Или мне для работы с файлами использовать другую функцию (как в примере: _fsopen)?

Добавлено через 13 минут
nmcf, заработало!
C++
1
ofstream out(sFName, ios::binary, _SH_DENYNO);
Нафиг было в msdn заикаться про _SH_COMPAT если её не понимает студия?
Попутный доп вопрос в тему. После посещения указанной Вами ссылки msdn захотелось попробовать поработать с файлами предложенными там способами:
C++
1
2
3
4
5
6
        FILE *out;
        if( (out = _fsopen( sFName, "wb", _SH_DENYNO )) != NULL )
        {
            // ??????????
            fclose(out);
        }
А что вставить вместо
C++
1
 out.write((char*)&buf, sizeof(buf));
между открытием и закрытием потока, чтобы записать в файл содержимое буфера?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.11.2017, 17:11
А для чего тебе _SH_COMPAT? Это какой-то устаревший флаг. Может, его уже убрали.
Цитата Сообщение от jkrnd Посмотреть сообщение
захотелось попробовать поработать с файлами предложенными там способами
Зачем тебе эта древность? Пользуйся fstream.
fwrite() там.
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
27.11.2017, 17:36  [ТС]
nmcf, то есть вариант
C++
1
2
3
        ofstream out(sFName, ios::binary, _SH_DENYNO); 
        out.write((char*)&buf, sizeof(buf));            
        out.close();
наиболее "свежий"?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.11.2017, 17:58
Да. Ну это же C++. Здесь потоки.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2017, 17:58
Помогаю со студенческими работами здесь

Перегрузка потокового ввода/вывода
Вот сама перегрузка ostream&amp; operator&lt;&lt; (ostream&amp; out, Poli&amp; outstream) { out&lt;&lt;&quot;Степень полинома=&quot;&lt;&lt;outstream.n&lt;&lt;endl; ...

Перегрузка операторов потокового ввода вывода
Есть класс &quot;деканат&quot;, полем которого есть список студентов, объектов из класса &quot;Студент&quot;. Как переопределяя операторы...

Перегрузка операторов потокового ввода-вывода
Пожалуйста, ответе на такой вопрос: почему при написании класса, при перегрузке операторов ввода-вывода, их обязательно нужно объявлять в...

Итераторы потокового ввода/вывода stl
Возник такой вопрос при изучении stl. Берем файл, из которого нужно считать данные, через copy записываем в вектор, но может мне кто-нибудь...

Работа с файлами на уровне потокового ввода-вывода с буферизацией. С++
Всем здравствуйте. Помогите пожалуйста. Необходимо обеспечить выполнение следующих действий: *ввод информации в файл; *корректировка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru