Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
#1

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

24.04.2013, 11:58. Просмотров 1427. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 11:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ввод/вывод имени и пути файла, а также защита от дурака (C++):

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

Защита от дурака - C++
Вот только начал изучать С++ помогите составить защиту от дурака пожалуйста, вот код: #include <iostream> using namespace std; ...

Защита от дурака - C++
нужна защита от дурака пытался реализовать с помощью 2 разных способов не вышло. #include <iostream> #include <string> #include...

Защита от дурака - C++
Как в этот код добавить защиту от ввода символов? #include "stdafx.h" #include <iostream> #include <Windows.h> #include <cmath> ...

Защита от дурака - C++
Вот кусок кода: do { cout << "Выберите вариант решения:" << endl; cout << " - первй вариант." << endl; cout << " -...

Защита от дурака - C++
Помогите, пожалуйста. Программа должна печатать только цифры (а не буквы и прочие символы, знак минус может стоять в самом начале) и при...

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

Добавлено через 16 секунд
Цитата Сообщение от art3330 Посмотреть сообщение
Как тогда стоит сделать ?
Я выше уже писал, что можно использовать.
0
art3330
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
Vourhey
Почетный модератор
6489 / 2263 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
24.04.2013, 13:29 #8
В смысле как? Строка у тебя есть. Кодом проверяешь, чем она заканчивается. в С++ существуются циклы, тип char, индексы... В чем вопрос, до конца не понятно.
0
24.04.2013, 13:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2013, 13:29
Привет! Вот еще темы с ответами:

защита от дурака - C++
Знаю что таких тем уже было много, но в них я ничего полезного не нашел. Так вот задания: пользователь вводит элементы в массив, но нужно...

Защита от дурака - C++
Здравствуйте уважаемые форумчане! я к вам, и вот по какому делу) Вот есть у меня задача: Даны два целых числа А и В. Вывести в порядке...

Вывод на экран имени переменной(имени файла, и тд.) - C++
Здрасти. Недалече столкнулся с проблемой: надо сравнить два файла по признаку количества содержащихся в них символов и вернуть тот что...

Защита от дурака. Разбор кода - C++
всем здравствуйте. Прошу помощи. такова ситуация, есть код защиты от ввода букв и отбрасывания пробелов, но не могу разобраться, он не мой....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru