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

 暖暖de苹果的马甲 发布于 2022-10-31 17:27

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

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

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

    2022-11-12 01:49 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有