Оператор C If-else, использующий строки и сравнивающий строки

#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: Я не твоя «возлюбленная».