#include <iostream>
using namespace std;
int main(){
char name[100];
cout<<"Enter: ";
cin>>name;
if(name == "hello"){
cout<<"Yes it works!";
}
return 0;
}
为什么当我在提示符中输入你好时我没有得到“是的,它有效!”消息?
答案 0 :(得分:9)
您需要使用strcmp
来测试是否相等。
name
是一个数组,而不是std::string
,而hello
是一个字符串文字,即const char*
。你正在比较指针,而不是字符串。
答案 1 :(得分:4)
试试这个:
#include <string.h>
#include <iostream>
using namespace std;
int main(){
char name[100];
cout<<"Enter: ";
cin>>name;
if(strcmp(name, "hello") == 0) {
cout << "Yes it works!";
}
return 0;
}
答案 2 :(得分:3)
如果使用std::string
而不是char数组,它将起作用:
#include <iostream>
#include <string>
using namespace std;
int main(){
string name;
cout<<"Enter: ";
cin>>name;
if(name == "hello"){
cout<<"Yes it works!";
}
return 0;
}
答案 3 :(得分:1)
有低级字符串(“C字符串”),它们没有您可能期望从其他语言中获得的高级行为。当您键入字符串文字(在“引号”中)时,您将创建这些类型的字符串之一:
http://en.wikipedia.org/wiki/C_string_handling
在C ++中,人们做的第一件事就是将该低级字符串传递给std::string
的构造函数,以创建一个类的实例,该类在接口中具有更多的便利性,您将习惯于
http://www.cplusplus.com/reference/string/string/
因为C ++是基于类似C语言的基础,所以了解C风格字符串的工作方式很有价值。同时,专业/惯用的C ++程序不应使用strcmp
之类的函数。有关C风格编程和C ++风格编程之间差异的有趣研究,请查看: