我想编译这个,但它给了我错误,即使我改变了引号,头文件中是否有任何错误,请告诉我
#include<iostream.h>
#include<conio.h>
void main()
{
char st[20];
cin>>st;
cout<<st<<endl;
if (st = 'a')
cout<<"This is a";
if (st = 'b')
cout<<"This is b";
getch();
}
我想编译这个,但它给了我错误,即使我改变了引号,头文件中是否有任何错误,请告诉我
#include<iostream.h>
#include<conio.h>
void main()
{
char st[20];
cin>>st;
cout<<st<<endl;
if (st = 'a')
cout<<"This is a";
if (st = 'b')
cout<<"This is b";
getch();
}
=
不是为了比较,
if (st = 'a')
if (st = 'b')
它将尝试更改st
,并且上述比较的结果始终为true
.
尝试使用std::string
:
#include <string>
...
std::string st;
std::cin >> st;
cout<<st<<endl;
if (st == "a")
cout<<"This is a";
if (st == "b")
cout<<"This is b";
以下内容不太正确:
if (st = 'a')
if (st = 'b')
首先,=
是赋值而不是比较。其次'a'
,and'b'
不是char
字符串文字。
上面的正确写法是
if (strcmp(st, "a") == 0)
if (strcmp(st, "b") == 0)
也就是说,我鼓励您不要使用 C 字符串,std::string
而是使用 C 字符串。
if (st = 'a')
if (st = 'b')
在上述两行中,l-value(left value) 'st' 指向数组的开头,其地址不能更改。这就是为什么你在编译中得到 l-value 的错误。使用相等(==)运算符而不是赋值(=)和取消引用 st 来更改 If 条件以获取开头的值。
if (*st == 'a')
if (*st == 'b')
嗯,在我的学习线上。您正在使用赋值运算符“=”导入 string.h 指令,并使用该strcmp();
库的功能希望这会有所帮助