我的代码因为#std :: string'而无法编译。没有名为'用户名'错误。我使用code :: blocks。我猜这个问题是因为我试图将一个字符串分配给一个班级,有人可以帮忙吗?
#include <iostream>
#include <string>
using namespace std;
class userx
{
public:
string username;
string password;
};
int main()
{
userx X, Y;
X.username = "X";
X.password = "1234";
Y.username = "Y";
Y.password = "5678";
string a;
string b;
cout << "What is your name?" << endl;
cin >> a;
if (a.username == a)
{
cout << "What is your password?" << endl;
cin >> b
if (a.password == b)
{
cout << "Password Accepted" << endl;
};
};
};
答案 0 :(得分:3)
当您可能需要a.username
或X.username
时,您写了Y.username
。
答案 1 :(得分:2)
if(a.username == a)
因为a
是string
所以它没有用户名作为其成员,可以使用点运算符访问
答案 2 :(得分:0)
您的代码说
if(a.username == a){
cout<<"What is your password?"<<endl;
cin>>b
if(a.password = b){
cout<<"Password Accepted"<<endl;
};
当您宣布string a;
时,std::string
确实没有username
。
也许您打算将输入的内容与X进行比较:
if(X.username == a){
cout<<"What is your password?"<<endl;
cin>>b
if(X.password = b){
cout<<"Password Accepted"<<endl;
};
也许你的意思是检查Y
。
如果username
错误,您可能想要考虑会发生什么。就目前而言,即使用户名错误,也会说密码已被接受。
修改强>
实际上if(X.password = b)
是一项作业而非比较,因此无论用户名和密码如何,您的用户都可能会通过。
再次修改
听起来你想要的是在容器上使用std::find
或使用std::map
方法查看find
是否包含给定密钥。有很多online clues