当我使用预定的输入运行程序时,出现错误消息。可能是什么原因导致的,我该如何解决?
我不知道该怎么办。我已经在Google上研究了该主题,但没有一个建议足够具体。
void alpha_Array(){
std::string nameArr[50];
nameArr[0] = "Reddit";
nameArr[1] = "Facebook";
std::string passArr[50];
passArr[0] = "1";
passArr[1] = "2";
std::stack<std::string> organiser;
std::stack<std::string> passwordStack;
int loops = 1;
organiser.push(nameArr[0]);
passwordStack.push(passArr[0]);
for(int x = 1; x < 50; x++){
loops++;
std::string best = organiser.top();
std::string bestPass = passwordStack.top();
std::string newStr = nameArr[x];
std::string newPass = passArr[x];
if (nameArr[x].empty()){
break;
}
std::string tipTop = alpha_Compare(best, newStr, 0);
if (tipTop == best){
organiser.pop();
organiser.push(newStr);
organiser.push(best);
passwordStack.pop();
passwordStack.push(newPass);
passwordStack.push(bestPass);
}
else{
organiser.push(newStr);
passwordStack.push(newPass);
}
}
for (int x = 0; x < loops; x++){
std::string name = organiser.top();
organiser.pop();
std::string password = passwordStack.top();
passwordStack.pop();
std::cout<<"Name: "<<name<<std::endl<<"Password: "<<password<<std::endl<<std::endl;
}
}
我希望会有一个格式化的响应,例如:
名称:Facebook 密码:1
名称:Reddit 密码:2
但是我得到了:
名称:Reddit 密码:1
名称:Facebook 密码:2
(lldb)
最后还有错误。
答案 0 :(得分:0)
在您的代码中,两次迭代后循环值将变为3。
int loops = 1;
for(int x = 1; x < 50; x++){
loops++;
//...
}
现在在此部分代码中,您需要迭代3次:
for (int x = 0; x < loops; x++) {
std::string name = organiser.top();
organiser.pop();
//...
}
因此,当只有2个元素时,您将堆栈弹出3次。