C++ 多字符声明的警告和错误

C++ 多字符声明的警告和错误,c++,C++,这是我的密码 #include<iostream> #include<conio.h> #include<string.h> using namespace std; class Dragon { public: char element[30]; int energy; }; int main() { Dragon dragon; char name[30]; cout<<"Enter elem

这是我的密码

#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
class Dragon
{
   public:
       char element[30];
       int energy;
};
int main()
{
   Dragon dragon;
   char name[30];
   cout<<"Enter element.\n\n";
   cin>>name;

if(name=='Hell')
{
    strcpy(dragon.element,"Hell Dragon");
    dragon.energy=15000000;
}
else if(name=='Dark')
{
    strcpy(dragon.element,"Dark Dragon");
    dragon.energy=1000000;
}
else
    cout<<"Unknown Dragon.";

cout<<"\nDragon's element = "<<dragon.element<<"\nDragon's energy level = "<<dragon.energy;

getch();

return 0;
#包括
#包括
#包括
使用名称空间std;
班龙
{
公众:
char元素[30];
国际能源;
};
int main()
{
龙;
字符名[30];
coutname;
如果(名称=='Hell')
{
strcpy(龙元素,“地狱龙”);
龙。能量=15000000;
}
else if(name='Dark')
{
strcpy(龙元素,“黑龙”);
龙的能量=1000000;
}
其他的

cout问题的一个原因是,
==
不能用于比较字符数组的内容

解决方案1:使用
std::string

<代码> STD::String 数据类型是C++中用于文本字符串的首选数据结构。
std::string
重载了用于比较字符串的
=

std::string
还有一个搜索子字符串的
find
方法

解决方案2:使用strcmp

C语言使用字符串数组。C语言还具有处理字符数组的
str*()
函数

C++语言使用了<代码> STR*()/Cuff>函数来处理C风格字符串(字符数组)。 使用

strcmp
将字符数组与字符串文本进行比较:

if (strcmp(name, "Hell") == 0)

您可能还希望使用
strstrstr
查找子字符串,或
strchr
查找字符数组中的字符(C样式字符串)。

嗯,字符串应包含在双引号中,例如:“Hello”如果你使用字符数组,使用StrcMP函数来比较字符串,并考虑在谷歌或Skestbox中查找语法错误或错误。这个链接可能有帮助:有没有理由使用<代码> STD::String ?不能使用字符数组使用<代码>=< /代码>。使用<代码> STRCMP < /代码>或如果你想要的话。要使用
=
,请使用
std::string
。因为您使用的是字符数组,
=
正在比较指针而不是内容。如果要使用
char[]
使用
cin.getline
而不是
std::string
,使用
cin.getline
而不是
cin>
。使用
getline
可以指定要输入的最大字符数,因此不会使字符数组溢出。