如果带有字符串的条件很简

时间:2012-04-29 14:40:30

标签: c++ strcmp

  

可能重复:
  How do I properly compare strings in C?

#include <iostream>
using namespace std;

int main(){

    char name[100];
    cout<<"Enter: ";
    cin>>name;
    if(name == "hello"){
        cout<<"Yes it works!";
    }

    return 0;
}

为什么当我在提示符中输入你好时我没有得到“是的,它有效!”消息?

4 个答案:

答案 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 ++风格编程之间差异的有趣研究,请查看:

Bjarne

Learning Standard C++ As A New Language (PDF)