Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
art3330
 Аватар для art3330
9 / 9 / 1
Регистрация: 16.12.2012
Сообщений: 141
24.04.2013, 11:58     Ввод/вывод имени и пути файла, а также защита от дурака #1
Доброго времени суток, господа.
Что-то я либо некорректно формулирую запрос в 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");
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 11:58     Ввод/вывод имени и пути файла, а также защита от дурака
Посмотрите здесь:

Защита от дурака. Ввод данных типа int с клавиатуры. C++
Защита от дурака C++
Вывод на экран имени переменной(имени файла, и тд.) C++
C++ Защита от дурака
защита от дурака C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.04.2013, 12:09     Ввод/вывод имени и пути файла, а также защита от дурака #2
std::getline
чтобы не вылетала проверять открылся ли файл. В стримах можно. Почитай док-ю по ним. И для "сохранить" нужен ofstream, а не ifstream.
art3330
 Аватар для art3330
9 / 9 / 1
Регистрация: 16.12.2012
Сообщений: 141
24.04.2013, 12:32  [ТС]     Ввод/вывод имени и пути файла, а также защита от дурака #3
Если кому пригодится.
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 не уничтожалась по выходу из цикла?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.04.2013, 12:35     Ввод/вывод имени и пути файла, а также защита от дурака #4
Цитата Сообщение от art3330 Посмотреть сообщение
Если кому пригодится.
Лучше никому. Пусть с пробелами твой пример примет неправильно.
art3330
 Аватар для art3330
9 / 9 / 1
Регистрация: 16.12.2012
Сообщений: 141
24.04.2013, 12:37  [ТС]     Ввод/вывод имени и пути файла, а также защита от дурака #5
Цитата Сообщение от Vourhey Посмотреть сообщение
Лучше никому. Пусть с пробелами твой пример примет неправильно.
Как тогда стоит сделать ?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.04.2013, 12:38     Ввод/вывод имени и пути файла, а также защита от дурака #6
Цитата Сообщение от art3330 Посмотреть сообщение
Так как мы объявляем переменную file внутри цикла, то в строке с while выскакивает ошибка, что нету file в области видимости. Если объявлять вне цикла, то в while будет использовать этот внешне объявленный вариант (я надеюсь мысль ясна). Как сделать, чтобы переменная file не уничтожалась по выходу из цикла?
Объявляешь перемнную нормально - вне цикла. Потому open. Все.

Добавлено через 16 секунд
Цитата Сообщение от art3330 Посмотреть сообщение
Как тогда стоит сделать ?
Я выше уже писал, что можно использовать.
art3330
 Аватар для art3330
9 / 9 / 1
Регистрация: 16.12.2012
Сообщений: 141
24.04.2013, 13:20  [ТС]     Ввод/вывод имени и пути файла, а также защита от дурака #7
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 минуту
Почти во все разобрался, все работает как надо. Остался последний нюанс, как сделать, чтобы была проверка на расширение. Мне надо работать с файлами одного типа, и если пользователь не ввел расширение, либо ввел другое, чтобы вызывалась ошибка. Или лучше самому дописывать расширение ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2013, 13:29     Ввод/вывод имени и пути файла, а также защита от дурака
Еще ссылки по теме:

C++ Защита от дурака
C++ Защита от дурака
C++ Защита от дурака

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

Или воспользуйтесь поиском по форуму:
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.04.2013, 13:29     Ввод/вывод имени и пути файла, а также защита от дурака #8
В смысле как? Строка у тебя есть. Кодом проверяешь, чем она заканчивается. в С++ существуются циклы, тип char, индексы... В чем вопрос, до конца не понятно.
Yandex
Объявления
24.04.2013, 13:29     Ввод/вывод имени и пути файла, а также защита от дурака
Ответ Создать тему
Опции темы

Текущее время: 10:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru