1

当我运行下面的代码时,我收到错误:第 14 行和第 26 行的数组分配无效。我对 c++ 相当陌生(1 周),所以我有点困惑。我搜索并找不到解决我问题的答案。

#include <iostream>

int main()
{

 using namespace std;

 char usrname[5];
 char psswrd[9];

 cout << "Please enter your username:";
 cin >> usrname;

 if (usrname = "User")
  {
    cout << "Username correct!";
  }
  else 
  {
    cout << "Username incorrect!";
  }

 cout << "Please enter your password:";
 cin >> psswrd;

 if (psswrd = "password")
  {
    cout << "The password is correct! Access granted.";
  }
 else 
  {
    cout << "The password is incorrect! Access denied.";
  }

  return 0; 
}
4

2 回答 2

7

您不能分配数组,并且

usrname = "User"

就是这样做的。不。

你的意思是

usrname == "User"

这是一个比较,但不会比较您的 strings。它只是比较指针。

使用std::string而不是char数组或指针并与 进行比较==

 #include <string>

 //...
 std::string usrname;
 cin << usrname;

  if (usrname == "User")
  //          ^^
  //   note == instead of =

附带问题 - 将“用户名”缩短为“用户名”有什么意义......你正在保存一个字符......

于 2013-01-06T21:56:43.347 回答
0

你需要使用 strcmp 或类似的。

if (!strcmp(usrname, "User"))
{
   cout << "Username correct!";
}

您正在做的是分配一个值而不是比较值。

于 2013-01-06T22:02:02.460 回答