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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
#1

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

02.08.2013, 18:20. Просмотров 1367. Ответов 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'ами
Так как же сравнить строку?
Или, допустим, числа, ведь всё может понадобиться
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2013, 18:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сравнение строк, чисел и т.д (C++):

Сравнение строк - C++
нужно сравнить две строки на сходство, но они не обязательно должны быть полностью одинаковы, и потом вывести первую стоку если они ...

Сравнение строк - C++
Здравствуйте. Есть 2 файла содержимое которых нужно сравнить и вывести на экран не совпадающие строки. С считыванием строк вроде...

Сравнение строк - C++
Написать собственную функцию, без использования функций стандартной библиотеки, которая сравнивает две строки, игнорируя количество...

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

сравнение строк - C++
как сравнить строки на совпадающие? идея такая...есть исходная строка типа char вводим с клавы ещё одну строку и если эти 2 строки...

Сравнение строк - C++
Тупо и банально нужно сравнить строки средствами с++. Гуглил, но не нашел работающих примеров, толи руки из одного места.. Как сравнивать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dmal
7 / 7 / 1
Регистрация: 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 - положительный.
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
02.08.2013, 18:54  [ТС] #3
А можно ли как-то сравнить string'и (*trollface*), int'ы?
dmal
7 / 7 / 1
Регистрация: 19.02.2013
Сообщений: 140
02.08.2013, 18:57 #4
Цитата Сообщение от Даниил Посмотреть сообщение
А можно ли как-то сравнить string'и (*trollface*), int'ы?
ты в консоли пишешь? или форма?
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
02.08.2013, 18:57 #5

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

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

Но тут могу тебя огорчить: такую проверку пароля:
C++
1
if(strcmp(u_log, login) == 0)
легко взломают
Ну вопрос был в том, что как сравнить строки =)
Belfegor
Ghost
172 / 172 / 6
Регистрация: 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;
}
Somebody
2788 / 1602 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
02.08.2013, 19:14 #8
Тогда уж
C++
1
cout << (s2 == s1 ? "ok\n" : "no\n");
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.08.2013, 19:43 #9
Нехорошо это - пароли в явном виде хранить.
Любой желающий сможет открыть бинарник в блокноте и подсмотреть пароль (который может и в других местах использоваться).
Лучше хранить хэш, по которому невозможно точно восстановить пароль.
Но и это не защитит от взлома, достаточно будет просто убрать условый переход.
dima55501
30 / 34 / 6
Регистрация: 14.07.2013
Сообщений: 146
02.08.2013, 19:44 #10
Kuzia domovenok, а посредством чего можно взломать такой пароль?
ForEveR
В астрале
Эксперт С++
7971 / 4733 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
02.08.2013, 19:48 #11
dima55501, Заглядывания в бинарник.
dima55501
30 / 34 / 6
Регистрация: 14.07.2013
Сообщений: 146
02.08.2013, 19:55 #12
ForEveR, а можно поподробнее? Вот я только что написал такую программу. .exe файл лежит у меня на рабочем столе. Как мне узнать что находится в char'е?

Код
int main()
{
     char *test = "qwerty";
     return 0;
}
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
02.08.2013, 19:57 #13
открой в блокноте же!
Цитата Сообщение от dima55501 Посмотреть сообщение
Kuzia domovenok, а посредством чего можно взломать такой пароль?
Цитата Сообщение от diagon Посмотреть сообщение
открыть бинарник в блокноте и подсмотреть пароль
А помимо блокнотов есть дизассемблеры, отладчики, хекс-редакторы... что там ещё есть?
dima55501
30 / 34 / 6
Регистрация: 14.07.2013
Сообщений: 146
02.08.2013, 20:00 #14
Kuzia domovenok, открыл .exe файл в блокноте (Programmers notepad), там символы. Попробовал поменять кодировку, но ничего не изменилось, только программа перестала запускаться
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
02.08.2013, 20:04 #15
Цитата Сообщение от dima55501 Посмотреть сообщение
Kuzia domovenok, открыл .exe файл в блокноте (Programmers notepad), там символы. Попробовал поменять кодировку, но ничего не изменилось, только программа перестала запускаться
ну так кто ж тебе даст просто так поменять? Как минимум нужно сохранить длину строки. А по-хорошему, смотреть на это дело в дизассемблере и соображать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2013, 20:04
Привет! Вот еще темы с ответами:

Сравнение строк - C++
Написал элементарную функцию, проверяющую введённый пользователем текст. Проблема в том, что он в любом случае выдаёт &quot;Ввод не удался....

сравнение строк - C++
Нужно сравнить строки типа стринг, без использования стандартных функций НЕ знаю,как их присвоить, пытаюсь передать функции string11 b...

Сравнение строк - C++
Объясните пожалуйста по какому способу строки сравниваются? А то я сравнивал так и не понял в чем состоит хитрость. Допустим пример...

Сравнение строк - C++
#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;stdlib.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.08.2013, 20:04
Ответ Создать тему
Опции темы

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