c++ - strcmp和==的区别?
怪我咯
怪我咯 2017-04-17 15:24:40
0
2
680

Example:

    char alpha;
    scanf("%c", &alpha);
    if (strcmp(&alpha, "c") == 0) //if (alpha == 'c')
    {
        printf("same");
    }
    else
    {
        printf("different");
    }

man page上的 description也没有讲具体

The strcmp() function compares the two strings s1 and s2. It returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2.

我谷歌了, 但只找到了http://stackoverflow.com/ques... , c 部分感觉不是很详细, 想在这里请教下大家这两者实现机制的区别与效率

怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(2)
黄舟

strcmp是用来判断char*类型的字符串是否相等的,char*字符串实际上就是字符串的首地址。
而==是直接判断左边和右边是否相等,如果用==来判断char*字符串的话,就是相当于比较他们的首地址,这当然无法判断字符串的值是否一致了。
而如果是std::string,因为已经重载了==运算符,所以可以直接用==进行比较。
另外std::string有const char*的构造函数,平时可以用string("abc") == "abc"是因为匹配string的==运算符时,后面的abc发生了隐式类型转换。

巴扎黑

可以问一下,你用 == 是怎么比较两个字符串的?有代码示例吗?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal