有人可以查看我的代码是否错误?执行时我的命令提示符崩溃。
我将问题缩小到这一部分:
string result = "";
result = pwpasst (username, password, "admin", "123");
result = pwpasst (username, password, "root", "456");
result = pwpasst (username, password, "peter", "789");
如果我评论出3个功能中的2个,它似乎有效。 + 我不知道我的代码是坏的还是我的命令提示符有问题。
其余代码:
#include <iostream>
using namespace std;
string pwpasst (string username, string password, string un, string pw){
if (username == un && password == pw)
{
return "You are logged in!";
}
};
int main()
{
string username;
string password;
cout << "Enter your username: ";
cin >> username;
cout << "Enter your password: ";
cin >> password;
string result = "";
result = pwpasst (username, password, "admin", "123");
result = pwpasst (username, password, "root", "456");
result = pwpasst (username, password, "peter", "789");
if (result != "You are logged in!"){
cout << "Wrong password or username!";
} else { cout << result;}
}
答案 0 :(得分:1)
如果if (username == un && password == pw)
为false,则缺少return语句,并且根据函数定义,函数最后需要返回string
值。这会调用未定义的行为,导致程序因运行时错误而终止。
答案 1 :(得分:1)
pwpasst()可能会返回字符串“你是......”
但缺少else子句并且没有返回任何内容,这是一个逻辑错误。 你的函数应该总是返回它承诺的字符串。
with open('Catagories', 'a') as myfile:
...
不是一个好的选择,因为之前每次都会输出1或2条错误消息。
在此代码段中,将始终执行三个分配。
string pwpasst (string username, string password, string un, string pw)
{
if (username == un && password == pw)
{
return "You are logged in!";
}
else
{
// perhaps - but not a good choice.
std::cerr << "unknown user name or password" << std::endl;
return ""; // return null string
}
};
你想在得到结果时突破,如下所示(但这也不是一个好选择):
string result = "";
result = pwpasst (username, password, "admin", "123");
result = pwpasst (username, password, "root", "456");
result = pwpasst (username, password, "peter", "789");
可能需要将错误消息放在此代码段中,而不是放在函数中。
需要进行一些逻辑更改。也许函数应该返回一个bool(表示有效名称/ pw与否),并且字符串'result'可能通过引用传递给要填写的函数。