c++ - 基本 C++(我认为是 cout 缓冲区还是溢出?!)

标签 c++ windows codeblocks

好的,所以我对 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/

相关文章:

c++ - 取消引用空指针

c++ - 从 ListView 控件中删除项目

c++ - 这会导致内存泄漏吗?

C++(在 Linux 下)程序没有给出预期的输出(定时器)

windows - Linux 上的 Oracle 数据库

java - 使用代码块创建共享对象?

python在环境变量路径中引发语法错误

python - 如何将 python 中的 .place() 方法转换为 java?

c++ - 无法在 Windows XP 上编译 rsa.h

c++ - Codeblocks 16.01 中警告被视为错误