c\c++中比较两个字符串或string对象是否相等

        在写程序的过程中,经常会遇到要比较两个字符串是否相等的情况。如果要比较的对象是char*字符串,则利用
int strcmp(const char* s1,const char* s2)
        当s1<s2时,返回为负数;
        当s1==s2时,返回值= 0;
        当s1>s2时,返回正数。
        即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
        "A"<"B" "a">"A" "computer">"compare"
        特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。
        ANSI标准规定,返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。
        如果要比较的对象是两个string,则利用函数compare()。若要比较string s1和s2则写为:s1.compare(s2),若返回值为0,则两者相等。
        注意:在比较两个字符串时不能利用符号“==”,“==”符号比较的是两个字符串的地址是否相等,此前在这个问题上犯过错误,谨记!谨记!

若是比较两个字符,则可以用"=="直接进行比较~

但在比较两个string对象时是可以利用“==”的,相等的话,则表达式的返回值为1,不等为0。

举个简单的例子:
#include<iostream>
#include<string>using namespace std;int main() {char a[] = "aaa",b[]="aaa";string A = "AAA", B = "AAA";cout <<"*a和*b的值分别是:" <<*a << "," << *b << endl;cout <<"*“aaa”的值是:"<< *"aaa" << endl;cout <<"利用 == 比较a,b两个字符串,结果是(相等为1,不等为0):" <<(a==b) << endl;cout << "利用strcmp()比较a,b两个字符串,结果是(相等为0,不等非0):"<<strcmp(a,b) << endl;cout << "利用 == 比较A,B两个string,结果是(相等为1,不等为0):"<<(A==B) << endl;cout << "利用compare()比较A,B两个string,结果是(相等为0,不等非0):" << A.compare(B) << endl;//int x = 10;//void* p = &x;//cout << sizeof(void*) << " address" << p << endl;return 0;
}

输出结果为:

从程序中可以看到,在比较字符串不能用"=="的原因是字符串本身是一个地址,举例:

char a[]="aaa";

很容易理解a是一个指向字符串的指针,但同时也应该知道包含引号在内的"aaa"字符串本身也是一个地址,指向该字符串的首元素,故而会有 *"aaa"的结果为a。

对于string对象而言,则没这么多注意事项。。。

        

c\c++中比较两个字符串或string对象是否相等相关推荐

  1. python字符串能减吗_在python中减去两个字符串(Subtract two strings in python)

    在python中减去两个字符串(Subtract two strings in python) 我应该计算两个不同列表的元素之间的差异. 这是我的代码: import operator a = ['5 ...

  2. Python中判断两个字符串的内容是否相同

    1 前言 今天在划分数据集的时候,需要判断两个字符串的内容是否相同,这个之前查过,不过好像忘记了,所以想着再记录一下- 2 Python中判断两个字符串的内容是否相同 使用"==" ...

  3. JAVA中判断两个字符串是否相等

    Java中判断字符串是否相等 相等判断操作符 == Java中, ==相等判断符用于判断基本数据类型和引用数据类型.当判断基本数据类型时,判断的是数值,当判断引用数据类型时,判断变量是否指向同一引用对 ...

  4. C语言字符串判断是否与已知相同,C语言中判断两个字符串是否相同的方法

    C语言中判断两个字符串是否相同的方法 C语言提供了几个标准库函数,可以比较两个字符串是否相同.以下是用strcmp()函数比较字符串的一个例子: #include #include void main ...

  5. php找出字符串不同地方,PHP中比较两个字符串找出第一个不同字符位置例子

    PHP中比较两个字符串找出第一个不同字符位置例子 一般的做法就会这样: 复制代码 代码如下: for ($offset = 0; $offset < $length; ++$offset) { ...

  6. android 多行 输入框,EditTextView Android中的多行字符串(Multiline String in EditTextView Android)...

    EditTextView Android中的多行字符串(Multiline String in EditTextView Android) 我用这段代码创建了我的EditTextView: mEdit ...

  7. MATLAB中字符变量(char)和字符串变量(string)的异同

    文章目录 MATLAB中字符变量(char)和字符串变量(string)的异同 1.表现形式上 2.相同用法 3.差异 4.两者转换 MATLAB中字符变量(char)和字符串变量(string)的异 ...

  8. 相同字符串的string对象不等

    今天遇到一个问题,用复制构造函数构造出来的String和同一个字符串的string对象居然不相等,即A和B是相同字符串的string,调用C=string(A)之后,C和B不相等. 后来改成C = s ...

  9. 找出两个字符串中所有共同的字符_面试中的两个字符串问题竟给我整懵了?!| 原力计划...

    作者 | 一路向维 责编 | 王晓曼 出品 | CSDN博客 昨天收到通知,今天有个面试,一家魔都中型电商公司,名字咱就不说了.内心顿时踌躇满志.跃跃欲试,晚上还翻看面试题,做准备. 到了目的地之后, ...

最新文章

  1. POJ 2728 Desert King [最优比率生成树]
  2. !--处理:借款冲销不自动冲减预算--
  3. 关于大小型项目如何最大限度提高WebAPi性能
  4. 利用xml+xsl给客户机添加超级管理帐户!
  5. boost::range模块transformed相关的测试程序
  6. 两圆相交求面积 hdu5120
  7. 利用回溯法解决1-9之间添加+或-或使得运算结果为100的问题
  8. Leetcode--16. 最接近的三数之和
  9. GNU make使用(二)
  10. Ghost 2.18.3 发布,基于 Markdown 的在线写作平台
  11. 第十八篇 JS传参数
  12. 这个轮子让SpringBoot实现api加密So Easy!
  13. Android Library的创建及使用详解
  14. C语言程序设计实践教程 邹显春pdf
  15. 2007年9月运势之水瓶座
  16. 技术管理规划-如何设定团队的目标
  17. 网络流——最大流和最小割
  18. 美通企业日报 | 阿迪达斯和碧昂丝达成标志性合作;万豪国际公布亚太区2020年发展愿景...
  19. eclipse 下载和安装教程(初学者,2022最新版)
  20. 时隔一年才发现嵌入式到底指的是什么

热门文章

  1. 20款超酷的404错误页面(上)
  2. 让你彻底明白什么叫游戏引擎(2)
  3. stl变易算法(二)
  4. sftp访问_实时数据处理探索:接收、处理、访问
  5. 机器学习实现计算不规则图形面积_《图形编程技术学习》(五十八)用VS实现逐顶点的光照计算...
  6. php替换图片_php实现图片上传并进行替换操作
  7. linux安装软件imagemagick,Linux系统中怎么安装和使用ImageMagick软件?
  8. 圣经 英文有声 android,英文有声+Epub Foundation Series 7部 Isaac Asimov - Audiobook
  9. java gui构建机制_java-从构造函数构建GUI. [设计决策]
  10. springboot旅游系统设计技术描述_5A旅游景区标识标牌系统业材料的工艺技术