当我在密码功能的特定部分执行程序时出错。实际上,这是一个基本的密码功能,在turbo c ++中正常工作,但是在visual c ++中 该错误到来
void user::password()
{
char any_key, ch;
string pass;
system("CLS");
cout << "\n\n\n\n\n\n\n\n\t\t\t\t*****************\n\t\t\t\t*ENTER
PASSWORD:*\n\t\t\t\t*****************\n\t\t\t\t";
start:
getline(cin,pass);
if (strcmp(pass, "sha") == 0) //this is where the error is!*
{
cout << "\n\n\t\t\t\t ACCESS GRANTED!!";
cout << "\n\t\t\t PRESS ANY KEY TO REDIRECT TO HOME PAGE";
cin >> any_key;
}
else
{
cout << "\n\t\t\t\t ACCESS DENIED :(,RETRY AGAIN!!\n\t\t\t\t";
goto start;
}
system("CLS");
}
答案 0 :(得分:5)
if语句中的表达式
if (strcmp(pass, "sha") == 0)
不正确。
当您提供了std :: string类型的第一个参数时,该函数需要const char *类型的两个参数,并且没有从std :: string类型到const char *类型的隐式转换。>
改为使用
if ( pass == "sha" )
在这种情况下,由于构造函数非显式,因此存在从const char *类型(字符串从数组类型隐式转换后的字符串文字的类型)到std :: string类型的对象的隐式转换
basic_string(const charT* s, const Allocator& a = Allocator());
答案 1 :(得分:3)
您还可以将字符串转换为 const char * ,并使用strcmp进行比较。
if (strcmp(pass.c_str(), "sha") == 0)