我正在尝试继续循环以要求用户输入新密码,直到满足条件。将此新密码与传递给此函数的旧密码进行比较。条件是,新旧密码的前半部分不能相同而且新旧密码的后半部分不能相同。如果满足此条件,则旧密码将更改为新密码。到目前为止,我有这个,但它只能工作一次,并且在条件满足之前不会循环请求新密码。有没有办法让这个保持循环,直到新密码通过条件?
bool changePasswordintonewPW(string& oldpassword)
{
string newPW;
int sizeN;
int half;
int lengtholdPW;
int lengthnewPW;
do
{
cout << "Enter a new password that must meet condition: ";
getline(cin, newPW);
lengthnewPW = newPW.length();
lengtholdPW = oldpassword.length();
if (lengthnewPW < lengtholdPW)
{
sizeN = lengthnewPW;
}
else if (lengtholdPW < lengthnewPW)
{
sizeN = lengtholdPW;
}
else
sizeN = lengtholdPW;
half = sizeN / 2;
if( ( oldpassword.size() <= 2 ) ||
( ( oldpassword.substr( 0, half ) != newPW.substr( 0, half ) ) &&
( oldpassword.substr( oldpassword.size() - half ) != newPW.substr( newPW.size() - half ) ) ) )
return true;
{
cout << "The new password cannot start or end with " << half
<< " or more characters that are the same as the old password" << endl << endl;
}
} while (( oldpassword.size() <= 2 ) ||
( ( oldpassword.substr( 0, half ) != newPW.substr( 0, half ) ) &&
( oldpassword.substr( oldpassword.size() - half ) != newPW.substr( newPW.size() - half ) ) ) );
oldpassword = newPW;
return true;
}
答案 0 :(得分:1)
您的while条件与密码为真的条件相同。您必须在密码为不时设置它。加!到了条件。