基本C++(我认为是cout缓冲区还是溢出?!)
basic C++ (cout buffer or overflow i think?!)
ok,所以我对C++有点陌生,我正在尝试构建一个基本的登录程序。除了一个问题,我让它工作了。。。这就是我得到的
void InitialLogin()
{
cout << "tt ===========LOGIN==========" << endl;
cout << "tnnntUsername/>> " ;
getline(cin, sUsername);
cout << "tntPassword/>> ";
getline(cin, sPassword);
if (sUsername == "myname" && sPassword == "mypass")
{
cout << "nttt--ACCESS GRANTED--";
system("CLS");
}
else if (sUsername != "myname" && sPassword != "mypass")
{
SetConsoleTextAttribute(h, FOREGROUND_RED);
cout << "nttt--ACCESS DENIED--nnn";
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++。
您应该返回一个状态,看看登录是否有效。然后循环,直到状态变为"true",或者用户没有机会了。这里有一个小例子:
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;
}
我觉得你得到这个是因为当密码和用户名都不正确时,你调用main()函数(顺便说一句,你可能想把这个检查中的&&更改为||,因为如果密码或用户名不正确,你想拒绝访问)。
您可能需要考虑让InitialLogin()函数返回一个bool来显示登录是否成功。如果不是,则让它再次运行InitialLogin()如果成功,则让其继续执行代码。
在调用InitialLogin()的地方,可以使用while循环使其重复。
while(!InitialLogin()){}
因此,当InitialLogin()不是false(错误登录)时,它将重试,当它不是true(正确登录)时将继续执行下一段代码。
相关文章:
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 使用 strcat 获取缓冲区溢出错误
- LeetCode 1:两和 - 地址清理器:堆缓冲区溢出地址
- 使用向量的缓冲区溢出
- 重新增长阵列时出错:写入时缓冲区溢出
- Leetcode 1366:堆缓冲区溢出
- 缓冲区溢出 - 数组索引越界(严重)
- C++二维矢量导致缓冲区溢出
- 缓冲区溢出怎么会成为黑客的攻击
- 如何防止缓冲区溢出
- 应该如何读取堆缓冲区溢出错误消息?
- 自动截断和 null 终止缓冲区溢出中的字符串缓冲区
- 如果用户输入两个或多个由空格分隔的字符串C++如何防止缓冲区溢出?
- MSVC C6029 警告:缓冲区可能溢出,使用未经检查的值.检查缓冲区大小时,警告不会消失
- 我正在尝试使用回溯来解决 N queen 问题,但在编译时它会给出运行时错误(动态堆栈缓冲区溢出)
- 我不能溢出缓冲区
- 包含溢出缓冲区的堆栈分配变量,也称为缓冲区
- STL矢量溢出缓冲区