zoukankan      html  css  js  c++  java
  • 《挑战30天C++入门极限》C/C++中字符串常量的不相等性及字符串的Copy

     
     

    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用于处理非结尾的数组的copy处理,memcpy第三个参数是设置b在内存中所需要的内存空间大小所以用sizeof(a)*sizeof(int)来处理。

     
     
  • 相关阅读:
    《O2O实战:他们是如何利用互联网的》.pdf
    建议收藏,mybatis插件原理详解
    《Tensorflow:实战Google深度学习框架》.pdf
    MyBatis插件原理及应用(上篇)
    《大数据算法》.pdf
    答了Mybatis这个问题后,面试官叫我回去等通知……
    《构建高性能WEB站点》.pdf
    SpringBoot 构建 Docker 镜像的最佳 3 种方式
    快速了解阿里微服务热门开源分布式事务框架——Seata
    超值干货 | 建议收藏:精美详尽的 HTTPS 原理图注意查收!
  • 原文地址:https://www.cnblogs.com/landv/p/11184730.html
Copyright © 2011-2022 走看看