Member 14079545 Ответов: 2

Программа, определяющая пароль, либо ошибочна, либо верна. Что не так в моем исходном коде?


#include<iostream>
using namespace std;
main ()
{
	//Local variable declaration
	string password = "Pretty BOY";
	string input;
	
	//Input data
	cout<<"Input password: ";
	cin>>input;
	
	//Process to check condition
	if (input == password)
	{
		cout<<"Access Granted.";
	}
	else 
	{
		cout<<"Access Denied, incorrect password.";
	}
}


Что я уже пробовал:

я не знаю в чем проблема

2 Ответов

Рейтинг:
1

OriginalGriff

Посмотрите на что cin делает: Базовый Ввод/Вывод - Учебники По C++ [^] и вы увидите:

Цитата:
Однако извлечение cin всегда рассматривает пробелы (пробелы, табуляции, новую строку...) как завершение извлекаемого значения, и таким образом извлечение строки означает всегда извлечение одного слова, а не фразы или целого предложения.

Чтобы получить всю строку из cin, существует функция, называемая getline, которая принимает поток (cin) в качестве первого аргумента, а строковую переменную-в качестве второго.


Рейтинг:
1

CPallini

Заготовка является разделителем для cin Итак, если пользователь вводит (правильно) 'Pretty BOY', то переменная input будет назначен с "довольно". Вы можете исправить это, прочитав всю строку:

#include<iostream>
using namespace std;
int main ()
{
  //Local variable declaration
  string password = "Pretty BOY";
  string input;

  //Input data
  cout<<"Input password: ";
  getline(cin, input);


  //Process to check condition
  if (input == password)
  {
    cout<<"Access Granted.\n";
  }
  else
  {
    cout<<"Access Denied, incorrect password.\n";
  }
}