Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/40: Рейтинг темы: голосов - 40, средняя оценка - 4.53
 Аватар для art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141

Ввод/вывод имени и пути файла, а также защита от дурака

24.04.2013, 11:58. Показов 7447. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, господа.
Что-то я либо некорректно формулирую запрос в google, либо просто мало чего есть на эту тему. Надо мне решить такой вопрос.
Требуется сохранить файл и надо, чтобы путь вводил пользователь, либо просто имя файла и тогда сохранен файл будет в каталоге с исполняемым файлом. Самый главный нюанс это то, что файл должен сохранятся строго определенного формата. Есть мысли, что сделать ввод только имени, а расширение приплюсовать. И надо сделать так, чтобы пользователь мог вводить только корректное имя файла. Так же интересует такой момент, сделать защиту, чтобы нельзя было записывать файл туда, где запись запрещена, чтобы программа не вылетала.
И также требуется открыть файл, тут тоже надо сделать защиту от дурака. И тот момент, что открывать можно только файлы определенного формата.
p.s. Если у кого есть полезные ссылки по этой теме, то прошу поделиться.
Заранее спасибо =)

Добавлено через 57 минут
Достаточно будет даже ссылки на хорошую статью

Добавлено через 10 часов 52 минуты
Ни у кого нету информации?

Добавлено через 2 часа 12 минут
В частности не могу разобраться с таким моментом.
C++
1
2
3
string s;
s="text.csv";
ifstream file(s);
Как сделать, чтобы работал этот вариант.
То есть чтобы пользователь мог сам вводить путь и имя файла.
Работает вот такой вариант.
C++
1
ifstream file("text.csv");
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2013, 11:58
Ответы с готовыми решениями:

Защита от дурака. Ввод данных типа int с клавиатуры.
Данные типа int вводятся с клавиатуры. нужно поставить защиту от дурака. Полазил на форуме нашёл программу: по аналогии пытался...

GUI. Проверка на ввод массива или «Защита от дурака»
Доброго времени суток! Осталось внести в приложение последние штрихи – проверку вводимых данных. Для понимая вот основная часть...

Поиск файла по имени и вывод его пути и расширения
Всем привет. Задача такая: поиск файла по его имени по всему диску, если файл найден, то вывести его расширение и путь к нему, если нет, то...

7
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.04.2013, 12:09
std::getline
чтобы не вылетала проверять открылся ли файл. В стримах можно. Почитай док-ю по ним. И для "сохранить" нужен ofstream, а не ifstream.
0
 Аватар для art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
24.04.2013, 12:32  [ТС]
Если кому пригодится.
C++
1
2
3
4
string s;
cout<<"Введите пожалуйста адрес файла";
cin>>s;
ifstream file(s.c_str());
Если писать так, то все работает.

Добавлено через 18 минут
Есть еще вопрос.
C++
1
2
3
4
5
do{
    cout<<"Введите пожалуйста путь и имя файла\n>";
    cin>>adress_file;
    ifstream file(adress_file.c_str());
}while(!file.fail());
Так как мы объявляем переменную file внутри цикла, то в строке с while выскакивает ошибка, что нету file в области видимости. Если объявлять вне цикла, то в while будет использовать этот внешне объявленный вариант (я надеюсь мысль ясна). Как сделать, чтобы переменная file не уничтожалась по выходу из цикла?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.04.2013, 12:35
Цитата Сообщение от art3330 Посмотреть сообщение
Если кому пригодится.
Лучше никому. Пусть с пробелами твой пример примет неправильно.
0
 Аватар для art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
24.04.2013, 12:37  [ТС]
Цитата Сообщение от Vourhey Посмотреть сообщение
Лучше никому. Пусть с пробелами твой пример примет неправильно.
Как тогда стоит сделать ?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.04.2013, 12:38
Цитата Сообщение от art3330 Посмотреть сообщение
Так как мы объявляем переменную file внутри цикла, то в строке с while выскакивает ошибка, что нету file в области видимости. Если объявлять вне цикла, то в while будет использовать этот внешне объявленный вариант (я надеюсь мысль ясна). Как сделать, чтобы переменная file не уничтожалась по выходу из цикла?
Объявляешь перемнную нормально - вне цикла. Потому open. Все.

Добавлено через 16 секунд
Цитата Сообщение от art3330 Посмотреть сообщение
Как тогда стоит сделать ?
Я выше уже писал, что можно использовать.
0
 Аватар для art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
24.04.2013, 13:20  [ТС]
C++
1
2
3
4
5
6
7
do{
        cout<<"Введите пожалуйста путь и имя файла\n>";
    getline(cin,adress_file);
    //Удаление пробелов (замена их на '')
    replace(adress_file.begin(), adress_file.end(), ' ', '');
    ifstream file(adress_file.c_str());
}while(!file.fail());
?

Добавлено через 41 минуту
Почти во все разобрался, все работает как надо. Остался последний нюанс, как сделать, чтобы была проверка на расширение. Мне надо работать с файлами одного типа, и если пользователь не ввел расширение, либо ввел другое, чтобы вызывалась ошибка. Или лучше самому дописывать расширение ?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.04.2013, 13:29
В смысле как? Строка у тебя есть. Кодом проверяешь, чем она заканчивается. в С++ существуются циклы, тип char, индексы... В чем вопрос, до конца не понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2013, 13:29
Помогаю со студенческими работами здесь

Защита от дурака, на ввод "мусора" в int
В общем, пытался сделать защиту на ввод неверного значения. Т.е чтобы вводилось значение не более 5 и не менее 1, и чтобы это было целое...

Ввод целочисленных чисел ("защита от дурака")
Пользователь вводит целое число, но если введённое число или символ не целочисленное - то программа будет говорить пользователю что он ввел...

Вывод на экран пути и имени файла без расширения без одного символа
Вывод на экран пути и имя файла -1 символ без расширения Не передает ARG значение. Что я делаю не так? @echo off path...

длинные пути в имени файла-вложения
Не секрет, что многие &quot;грамотные&quot; пользователи любят создать N уровней папок на файловом хранилище и назвать файл пострашнее/подлиннее....

Выделение имени файла из абсолютного пути
Всем привет! У меня есть файл, который содержит абсолютные пути файлов всех подкаталогов какой нибудь директории. Пример: FILE: ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru