#include<iostream>
#include<conio>
#include<string>
using namespace std;
class CompanyName
{
public:
char name[10];
void display()
{
if(name=="emily")
cout<<"Hired!"<<endl;
}
};
void main()
{
CompanyName c;
cout<<"enter name"<<endl;
cin>>c.name;
c.display();
getch();
}
因此,我的朋友刚进入一家公司,我想用她的小型CPP计划在她的Facebook墙上祝贺她(并宣布某某某公司雇用她)。我不想只打印'祝贺艾米莉!'因为我已经做了别的事。所以这次只要查看代码就可以看到我想要做什么。任何更好的建议都非常受欢迎。 但我的问题是,我无法运行此代码。我觉得'if'线不对。有人可以帮我更正代码吗?我还是个初学者。
答案 0 :(得分:2)
您将name
声明为char name[10];
,然后name
将被视为指针。你的指针永远不会等于字符串"emily"
。
解决方案:强烈建议您只使用std::string
#include <string>
这应该有效(因为你已经包含了库):
class CompanyName
{
public:
std::string name;
// ..
if (name == "emily")
// cout
// ..
};
答案 1 :(得分:1)
您只能使用name
运算符对==
进行比较,因为它是char
数组,您应该使用strcmp(name, "emily") == 0
更好的是,使用std::string
类来存储和操作字符串std::string
,您可以使用==
运算符进行比较。
另一件事:您不应该使用getch()
,因为它不是标准的c ++。
答案 2 :(得分:1)
您知道,如果您使用std::string
,则此代码会更容易。请参阅以下代码:
#include <iostream>
#include <string>
using namespace std;
class CompanyName {
public:
string name;
void display()
{
if (name == "emily")
cout << "Hired!" << endl;
}
};
int main()
{
CompanyName c;
cout << "enter name" << endl;
cin >> c.name;
c.display();
return 0;
}
然后这里对你的字符串大小没有限制。顺便说一句,你的代码不起作用,因为它只能包含9个字符+ \0
,这意味着你的字符串太长了。使用上面的解决方案。
Live Example
答案 3 :(得分:1)
在C ++中直接将字符数组与字符串进行比较是不安全的。正如其他人所建议的那样,尝试使用std::string
,它将为您处理所有背景资料。
这是一个使用您的类的析构函数的有趣示例:
#include<iostream>
#include<string>
using namespace std;
class CompanyName
{
public:
std::string name;
~CompanyName()
{
if (name == "emily")
cout << "Hired!" << endl;
else cout << "Who's that?" << endl;
}
};
int main()
{
CompanyName c;
cout << "Enter new employee name" << endl;
cin >> c.name;
return EXIT_SUCCESS;
}
在线编译:http://cpp.sh/433h7