首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《挑战30天C++入门极限》C/C++中字符串常量的不相等性及字符串的Copy

《挑战30天C++入门极限》C/C++中字符串常量的不相等性及字符串的Copy

作者头像
landv
发布2019-07-15 16:53:28
发布2019-07-15 16:53:28
68600
举报
文章被收录于专栏:landvlandv
运行总次数:0
代码语言:javascript
代码运行次数:0
运行
复制






 

C/C++中字符串常量的不相等性及字符串的Copy

#include <iostream>  
  
void main(void)  
{  
    if("test"=="test")  
    {  
        cout<<"相等";  
    }  
    else  
    {  
        cout<<"不相等";  
    }  
}








  上面的代码我们测试两个内容为test的字符串常量是否相等,按照常理,应该是相等的,这些在一些过程式语言中会得到相等的结论,但在c/c++却不是这样。 


  为什么呢? 


  答案在这里:因为字符串常量存储在计算机内存中,两个字符串常量的地址均不相同,所以这样的比较自然就不会得到我们所需要的结果,如果要进行是否相等的比较应该使用strcmp()这个涵数进行比较!

#include <iostream>  

#include <string>  
using namespace std;  
void main(void)    
{    
    if(strcmp("test","test")==0)    
    {    
        cout<<"相等";    
    }    
    else    
    {    
        cout<<"不相等";    
    }  
    cin.get();  
}

  strcmp()的函数原形是,int strcmp(const char* str1,const char* str) 


  相当将会返回一个等于0的整数,不相等的时候将会返回一个非0整数。

#include <iostream>  

#include <string>  
using namespace std;  
void main(void)    
{    
    char test[]="test str!";  
    char str[15];  
    strcpy(str,test);  
    cout<<str<<endl;  
  
    int a[]={1,2,3,4,5};  
    int b[5];  
    memcpy(b,a,sizeof(a));  
    for(int i=0;i<5;i++)  
    {  
        cout<<b[i]<<",";  
    }  
    cin.get();  
}

  上面的代码中的strcpy用来处理字符串数学组的copy,由于字符串数组属于const char*也就是常量指针所以是不能用a="test 
str!";的方式赋值的,接在后面的memcpy用于处理非\0结尾的数组的copy处理,memcpy第三个参数是设置b在内存中所需要的内存空间大小所以用sizeof(a)*sizeof(int)来处理。






 






 



















本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档