Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Даниил
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
#1

Сравнение строк, чисел и т.д

02.08.2013, 18:20. Просмотров 1490. Ответов 28
Метки нет (Все метки)

Вот, допустим, хочу я сделать проверку пароля
Пишу:
C++
1
2
3
4
5
int main () {
string login = "qwerty123";
cout << "Enter password: ";
cin >> login;
}
И нужно сделать проверку пароля, с правильным паролем

Пробовал так:
C++
1
2
3
if (str login, "qwerty123") {
cout << "Valid login!";
}
Но не работает, такое, как я помню (статью читал), используется с char'ами
Так как же сравнить строку?
Или, допустим, числа, ведь всё может понадобиться
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2013, 18:20
Ответы с готовыми решениями:

Сравнение строк
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt;...

Сравнение строк
Всем привет, имеется строка записаная в масив, как мне сравнить первую букву...

Сравнение строк
Сначала указываю каталог, из которого нужно вывести список файлов этого...

сравнение строк
Подскажите как сравнить std::string и char *array ? может нужно преобразовать...

Сравнение строк
Есть две стринговых строки которые нужно сравнить с учетом пробелов.Пробовал...

28
dmal
8 / 8 / 4
Регистрация: 19.02.2013
Сообщений: 140
02.08.2013, 18:50 #2
Но не работает, такое, как я помню (статью читал), используется с char'ами
Так как же сравнить строку?
Или, допустим, числа, ведь всё может понадобиться
Сравнение строк:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream.h>
#include <conio.h>
 
void _tmain()
{
    char* u_log = "qwerty";
    char* login = "qwerty";
 
    if(strcmp(u_log, login) == 0)
        cout << "Good =)";
    else
        cout << "Error!!!";
 
    _getch();
}
функция strcmp(s1, s2) сравнивает две строки и если s1 = s2, то результат равен 0. Если s1 < s2, то отрицательный, s1 > s2 - положительный.
1
Даниил
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
02.08.2013, 18:54  [ТС] #3
А можно ли как-то сравнить string'и (*trollface*), int'ы?
0
dmal
8 / 8 / 4
Регистрация: 19.02.2013
Сообщений: 140
02.08.2013, 18:57 #4
Цитата Сообщение от Даниил Посмотреть сообщение
А можно ли как-то сравнить string'и (*trollface*), int'ы?
ты в консоли пишешь? или форма?
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,175
Записей в блоге: 1
02.08.2013, 18:57 #5

Даниил, просто стоит изучить основы языка, хотя желание написать что-то своё похвально.
Но тут могу тебя огорчить: такую проверку пароля:
C++
1
if(strcmp(u_log, login) == 0)
легко взломают

dmal, забыл. Новичок не догадается вставить
C++
1
#include <string.h>
1
dmal
8 / 8 / 4
Регистрация: 19.02.2013
Сообщений: 140
02.08.2013, 19:00 #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение

Но тут могу тебя огорчить: такую проверку пароля:
C++
1
if(strcmp(u_log, login) == 0)
легко взломают
Ну вопрос был в том, что как сравнить строки =)
0
Belfegor
Ghost
173 / 173 / 40
Регистрация: 16.09.2012
Сообщений: 526
02.08.2013, 19:00 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
using std::string;
using std::cin;
using std::cout;
 
int main() {
    string s1 = "qwerty", s2;
    cout << "enter password: ";
    cin >> s2;
    s2 == s1 ? cout << "ok\n" : cout << "no\n";
    return 0;
}
0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
02.08.2013, 19:14 #8
Тогда уж
C++
1
cout << (s2 == s1 ? "ok\n" : "no\n");
1
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.08.2013, 19:43 #9
Нехорошо это - пароли в явном виде хранить.
Любой желающий сможет открыть бинарник в блокноте и подсмотреть пароль (который может и в других местах использоваться).
Лучше хранить хэш, по которому невозможно точно восстановить пароль.
Но и это не защитит от взлома, достаточно будет просто убрать условый переход.
0
dima55501
30 / 34 / 11
Регистрация: 14.07.2013
Сообщений: 146
02.08.2013, 19:44 #10
Kuzia domovenok, а посредством чего можно взломать такой пароль?
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
02.08.2013, 19:48 #11
dima55501, Заглядывания в бинарник.
0
dima55501
30 / 34 / 11
Регистрация: 14.07.2013
Сообщений: 146
02.08.2013, 19:55 #12
ForEveR, а можно поподробнее? Вот я только что написал такую программу. .exe файл лежит у меня на рабочем столе. Как мне узнать что находится в char'е?

Код
int main()
{
     char *test = "qwerty";
     return 0;
}
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,175
Записей в блоге: 1
02.08.2013, 19:57 #13
открой в блокноте же!
Цитата Сообщение от dima55501 Посмотреть сообщение
Kuzia domovenok, а посредством чего можно взломать такой пароль?
Цитата Сообщение от diagon Посмотреть сообщение
открыть бинарник в блокноте и подсмотреть пароль
А помимо блокнотов есть дизассемблеры, отладчики, хекс-редакторы... что там ещё есть?
0
dima55501
30 / 34 / 11
Регистрация: 14.07.2013
Сообщений: 146
02.08.2013, 20:00 #14
Kuzia domovenok, открыл .exe файл в блокноте (Programmers notepad), там символы. Попробовал поменять кодировку, но ничего не изменилось, только программа перестала запускаться
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,175
Записей в блоге: 1
02.08.2013, 20:04 #15
Цитата Сообщение от dima55501 Посмотреть сообщение
Kuzia domovenok, открыл .exe файл в блокноте (Programmers notepad), там символы. Попробовал поменять кодировку, но ничего не изменилось, только программа перестала запускаться
ну так кто ж тебе даст просто так поменять? Как минимум нужно сохранить длину строки. А по-хорошему, смотреть на это дело в дизассемблере и соображать.
0
dima55501
30 / 34 / 11
Регистрация: 14.07.2013
Сообщений: 146
02.08.2013, 20:05 #16
Kuzia domovenok, в общем я видимо ошибался, когда думал, что пароль там будет написан большими буквами посередине
0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
02.08.2013, 20:15 #17
Цитата Сообщение от dima55501 Посмотреть сообщение
в общем я видимо ошибался, когда думал, что пароль там будет написан большими буквами посередине
Однако, он будет в открытом виде, так что если блокнот не подумал, что этот файл в Unicode, то надо просто внимательнее посмотреть.

Добавлено через 1 минуту
Да, строчку эту надо бы где-нибудь в проге использовать, а иначе её после оптимизации может не остаться уже.
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,175
Записей в блоге: 1
02.08.2013, 20:56 #18
dima55501, а ты попробуй подобрать здесь пароль
0
Вложения
Тип файла: rar crack_my_password.rar (4.7 Кб, 11 просмотров)
Даниил
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
02.08.2013, 21:13  [ТС] #19
Дадите исходник подберём

Добавлено через 5 минут
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
забыл. Новичок не догадается вставить
Не обижайте так, ведь новичок это не означает что пол часа назад начал С++ изучать

Добавлено через 7 минут
Решил так, чтоб особо не заморачиваться

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Проверка строк (пароля).cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <string>
#include <conio.h>
 
using namespace std;
 
void valid () {
    cout << "Valid password! =)" << endl;
}
 
int main() {
    string s1 = "qwerty", s2;
    cout << "Enter password: ";
    cin >> s2;
    if (s2 == s1) {
    valid();
    }
    else {
    cout << "Error!No valid password!" << endl;
    }
    getch();
    return 0;
}
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,175
Записей в блоге: 1
02.08.2013, 21:23 #20
Цитата Сообщение от Даниил Посмотреть сообщение
Дадите исходник подберём
вполне реально без исходника обойтись.
Цитата Сообщение от Даниил Посмотреть сообщение
Решил так, чтоб особо не заморачиваться
Заморачиваться не стал, но и проблема защиты от взлома не исчезла.
0
02.08.2013, 21:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2013, 21:23

Сравнение строк
Здравствуйте. Есть 2 файла содержимое которых нужно сравнить и вывести на экран...

Сравнение 2-х строк S и s
Заданы две строки S и s. Определить, является ли строка s префиксом, суффиксом,...

Сравнение строк
нужно сравнить две строки на сходство, но они не обязательно должны быть...


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

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

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