c++ - strcmp和==的区别?

查看:72
本文介绍了c++ - strcmp和==的区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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 部分感觉不是很详细, 想在这里请教下大家这两者实现机制的区别与效率

解决方案

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

这篇关于c++ - strcmp和==的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆