如何保持循环,直到密码满足C++条件

How to keep looping until password meets condition in C++?

本文关键字:密码 满足 C++ 条件 何保持 循环      更新时间:2023-10-16

我正在尝试继续循环以要求用户输入新密码,直到满足条件。将此新密码与传递到此函数的旧密码进行比较。条件是,新密码和旧密码的前半部分不能相同,新密码和旧密码的后半部分不能相同。如果满足此条件,旧密码将更改为新密码。到目前为止,我有这个,但它只工作一次,并且在满足条件之前不会一直循环要求新密码。有没有办法让它继续循环,直到新密码通过条件?

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;
 }

您的 while 条件与密码为真的条件相同。 您必须在密码为真时设置它。加!到同时条件。