#c #if-statement
#c #оператор if
Вопрос:
когда я ввожу (Im qwerty) как (y), программа показывает «Ваша учетная запись деактивирована» вместо «Ваш пароль неверен». Я искал те же проблемы, но const. char и использование strcmp слишком сложны для меня, и мой инструктор не использует такие коды.Мне очень не терпится узнать, что я должен сделать, чтобы моя программа была правильной. (Заранее Tnx)
#include <iostream>
using namespace std;
int main () {
string y;
cout << "Enter Icode: ";
cin >> y;
if (y == "Im qwerty")
cout << "Your password is incorrect.";
else
cout << "Your account has been deactivated.";
cin.get();
return 0;
}
Комментарии:
1. но когда y = «Я qwerty», это не «я робби» — так почему вы ожидаете, что он скажет «неверно»?
2. Естественно, он должен перейти к условию else, поскольку
"I'm qwerty"
не равно"Im robbee"
3. strcmp предназначен для C, используйте y.сравните(«Im qwerty») != 0)
4. Проблема, о которой вы спрашиваете, может быть решена с помощью отладчика; Могу ли я предложить вам прочитать это , что поможет вам решить другие проблемы в будущем
5. Рассматривали ли вы возможность распечатать значение
y
, чтобы посмотреть, что это такое? «С моей вещью возникла проблема», тогда посмотрите на эту вещь .
Ответ №1:
Проблема в том, что cin >> y;
считывается одно слово, тогда как в "Im qwerty"
есть два слова. Другими словами, эта программа всегда выводит "Your account has been deactivated."
, потому что одно слово никогда не совпадает с двумя словами.
Если вы хотите прочитать несколько слов, проще всего прочитать целую строку, например заменить cin >> y;
на getline(cin, y);
.
Комментарии:
1. Большое вам спасибо, сэр. @Максим
2. @MaximEgorushkin: Я не твоя «возлюбленная».