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

Cделать проверку по ключу - C++

Войти
Регистрация
Восстановить пароль
 
Nalik
 Аватар для Nalik
44 / 25 / 9
Регистрация: 30.11.2012
Сообщений: 588
18.04.2014, 22:29     Cделать проверку по ключу #1
Помогите пожалуйста разобраться. В программе нужно сделать проверку по ключу, то есть если ключ который находится в файле .txt совпадает с тем, что находится в коде в программе и занесён в переменную, то программа продолжает работать.

Есть такой вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        string s1; //Переменная будет считывать строку 
        string key1 = ("222222","111111", "123456"); //переменная в которой ключи
 
    ifstream in ("D:\\key.txt"); //Открываем файл для считывания информации 
    in>>s1; //считываем строку
    in.close(); // Закрываем файл
 
    if (key1 == s1) //делаем проверку, если любая строка из переменной key1 равняется переменной s1 (тексту который находится в файле), то пишем "пароль подходит"
    {
        cout << "пароль подходит\n";
    }
    else
    {
        cout <<"пароль не верный\n";
        cout << "пароль в файле: " << s1 << "\n" << "пароль в переменной: " << key1 << "\n\n";
    }
Проблема в том, что переменной key1 всегда присваивается строка 123456, первые две она вообще не видит и соответственно если в файл txt занесен текст "222222" или "111111" программа выдает сообщение, что пароль не верный..
Может кто нибудь знает где в коде ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
18.04.2014, 22:31     Cделать проверку по ключу #2
Nalik, делайте массив, а не 1 переменную. Иначе у вас происходит 3 присвоения и по итогу key1 равен последнему ключу.
C++
1
string key1[3] = {"222222","111111", "123456"};
MastAKK
18.04.2014, 22:35
  #3

Не по теме:

string - класс, а не оператор

Nalik
 Аватар для Nalik
44 / 25 / 9
Регистрация: 30.11.2012
Сообщений: 588
18.04.2014, 22:39  [ТС]     Cделать проверку по ключу #4
В этом случае подчеркивает знак ">>" в коде:
C++
1
in>>s1; //считываем строку
и соответственно выдает ошибку:
while trying to match the argument list '(std::ifstream, std::string [3])'

Добавлено через 24 секунды
MastAKK, буду знать, спасибо)

Добавлено через 3 минуты
Первым делом я использовал массив, но отказался, так как выдает ошибку соответствия классов(
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
18.04.2014, 22:39     Cделать проверку по ключу #5
Nalik, а вот это не должно быть. Покажите, как сейчас выглядит код
Nalik
 Аватар для Nalik
44 / 25 / 9
Регистрация: 30.11.2012
Сообщений: 588
18.04.2014, 22:44  [ТС]     Cделать проверку по ключу #6
Вот)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    string s1[3]; //Переменная будет считывать строку 
    string key1[3] = {"222222","111111", "123456"};
    
 
    ifstream in ("D:\\key.txt"); //Открываем файл для считывания информации 
    in>>s1; //считываем строку
    in.close(); // Закрываем файл
 
    if (s1 == key1)
    {
        cout << "пароль подходит\n";
    }
    else
    {
        cout <<"пароль не верный\n";
        cout << "пароль в файле: " << s1 << "\n" << "пароль в переменной: " << key1 << "\n\n";
    }
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
18.04.2014, 22:46     Cделать проверку по ключу #7
Nalik, переменную s1 как раз не надо делать массивом. Вы же читаете из файла только 1 пароль. Потому и выдавал ошибку, что вы неправильно к массиву обращались. Вы с массивами видимо не умеете работать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2014, 00:11     Cделать проверку по ключу
Еще ссылки по теме:

C++ Cделать ввод с клавиатуры 20 слов и найти индекс максимального слова
Cделать вывод первого вхождения в строку C++
C++ Cделать проверку на истинность всех элементов массива bool
C++ Cделать конструктор по умолчанию и копирования для класса
Cделать отдельную функцию, которая будет выводить число подсчитанное в предыдущей C++

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

Или воспользуйтесь поиском по форуму:
Nalik
 Аватар для Nalik
44 / 25 / 9
Регистрация: 30.11.2012
Сообщений: 588
19.04.2014, 00:11  [ТС]     Cделать проверку по ключу #8
К сожалению не приходилось с ними работать, исправил s1 на просто string, но ошибку теперь выдает в другом месте..
подчеркивает красным "=="
C++
1
if (key1 == s1)
я так понимаю, я снова как-то не правильно обращаюсь к массиву?
Пробовал так:
C++
1
if (s1 (key1))
и так
C++
1
if (s1 [key1])
и ещё несколько вариантов, но всё не работает

подскажите пожалуйста в чём ошибка..

Добавлено через 11 минут
а если я пишу вот так:
C++
1
if (s1 == key1[3])
то программа ошибок не подчеркивает, но выдает ошибку при запуске с вариантами Break и Continue

Добавлено через 7 минут
Так заработало, но проблемы не решило..
C++
1
if (s1==key1[0], s1==key1[1])
В таком варианте, тоже учитывается лишь последнее значение, то есть если пароль в файле txt "222222", то выдаёт неверный пароль, если пароль в файле "111111", то пароль верный.. то есть проверяется только это:
s1==key1[1]

Добавлено через 40 минут
Подскажите пожалуйста как проверять текст из файла на соответствие с текстом по всему массиву и если в массиве есть одинаковый текст с текстом из файла, то выдавать, что пароль правильный?
Yandex
Объявления
19.04.2014, 00:11     Cделать проверку по ключу
Ответ Создать тему
Опции темы

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