Я создал программу, которая получает пароль от пользователя. Пользователь также может изменить пароль, сохранив исходный пароль в строке, а затем старый пароль в новой строке, но если оба совпадают, пользователь может ввести новый пароль, но даже если я введу тот же пароль в обеих новых и старых строках, if оператор не возвращает true, и пароль не изменяется. 2nd, когда я ввожу пароль и нажимаю клавишу ввода, ввод также сохраняется в пароле. Вот мой кодC++ - мой пароль Программа не меняется Пароль
void password(int n)
{
string pass = "0", oldpass = "0";
char ch = '0';
if (n)
{
cout << "Enter Old Password: ";
ch = _getch();
while (ch != '\r')
{
oldpass.push_back(ch);
cout << "*";
ch = _getch();
}
cout << "Password is " << oldpass << endl;
if (oldpass == pass)
{
cout << "Enter New Password: ";
ch = _getch();
while (ch != '\r')
{
pass.push_back(ch);
cout << "*";
ch = _getch();
}
}
else
{
cout << "\nPassword Does Not Match" << endl;
system("pause");
}
}
else
{
cout << "No Password Found. Enter New Password... ";
ch = _getch();
while (ch != '\r')
{
pass.push_back(ch);
cout << "*";
ch = _getch();
}
cout << "Password is " << pass<<endl;
cout << "\nPassword Saved Successfully" << endl;
system("pause");
}
}
Получил это Большое спасибо. Только одна вещь объявляет строку и не инициализирует ее, делает ее пустой строкой. Я думал, что у него есть стоимость мусора? – SAIFI369
Строка не является примитивным типом данных: int, float, double, char и т. Д. String - это класс и обрабатывает исключения, которые нет в строках c-style. Так что нет, если вы не инициализируете объект String, он установит, что размер по умолчанию по умолчанию равен 0, не будет содержать никаких символов и будет обрабатывать вызовы самому себе. В то время как строки c-style представляют собой массив символов и будут иметь память символов, равную ее размеру, независимо от того, была ли инициализирована память или нет. – Dalphat
Хорошо, я понимаю, и что вы сказали о каждой функции pushback? – SAIFI369