好的,所以我对 C++ 有点陌生,我正在尝试构建一个基本的登录程序。除了一个问题,iv 让它工作了......这就是 iv 得到的
void InitialLogin()
{
cout << "\t\t ===========LOGIN==========" << endl;
cout << "\t\n\n\n\tUsername/>> " ;
getline(cin, sUsername);
cout << "\t\n\tPassword/>> ";
getline(cin, sPassword);
if (sUsername == "myname" && sPassword == "mypass")
{
cout << "\n\t\t\t--ACCESS GRANTED--";
system("CLS");
}
else if (sUsername != "myname" && sPassword != "mypass")
{
SetConsoleTextAttribute(h, FOREGROUND_RED);
cout << "\n\t\t\t--ACCESS DENIED--\n\n\n";
SetConsoleTextAttribute(h, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
main();
}
}
运行此命令后,如果登录成功,我将在清除屏幕后运行以下命令...
void Initialization()
{
cout << "/>> Aquireing file list......" << endl;
cout << "/>> file list aquired........" << endl;
cout << "/>> determing file location.." << endl;
}
现在我的问题是,如果我输入的用户名或密码错误,说一次我得到初始化输出两次,如果我输入错误两次,输出是三次。
我需要知道如何清除溢出或缓冲区之类的... 请帮助:)
最佳答案
您的函数正在尝试调用 main()
。这不是合法的 C++。
您应该返回一个状态以查看登录是否有效。然后循环直到状态变为“真”,或者用户已经没有机会了。这是一个小例子:
bool InitialLogin();
int main()
{
int numChances = 3;
int numCount = 0;
bool loginOk = false;
while (numCount < numChances && !loginOk )
{
loginOk = InitialiLogin();
++numCount;
}
if ( !loginOk )
{
// number of chances ran out
return 0;
}
else
{
// proceed. Login was successful
}
}
bool InitialLogin()
{
//...
if (sUsername == "myname" && sPassword == "mypass")
{
//...
return true;
}
// anything here means that the login failed. There is no need for an if()
//...
return false;
}
关于c++ - 基本 C++(我认为是 cout 缓冲区还是溢出?!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571559/