10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
1

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

24.04.2013, 11:58. Показов 6476. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2013, 11:58
Ответы с готовыми решениями:

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

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

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

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

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

Добавлено через 16 секунд
Цитата Сообщение от art3330 Посмотреть сообщение
Как тогда стоит сделать ?
Я выше уже писал, что можно использовать.
0
10 / 10 / 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 минуту
Почти во все разобрался, все работает как надо. Остался последний нюанс, как сделать, чтобы была проверка на расширение. Мне надо работать с файлами одного типа, и если пользователь не ввел расширение, либо ввел другое, чтобы вызывалась ошибка. Или лучше самому дописывать расширение ?
0
Почетный модератор
7388 / 2634 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.04.2013, 13:29 8
В смысле как? Строка у тебя есть. Кодом проверяешь, чем она заканчивается. в С++ существуются циклы, тип char, индексы... В чем вопрос, до конца не понятно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2013, 13:29
Помогаю со студенческими работами здесь

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

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

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

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

Извлечение имени файла и пути из строки
Доброго времени суток!!! Есть строка - полный путь к файлу. Как извлечь из этой строки путь и имя...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru