当前位置:主页   - 电脑 - 程序设计 - C/C++
C/C++中字符串常量的不相等性及字符串的Copy
来源:网络   作者:   更新时间:2012-02-08
收藏此页】    【字号    】    【打印】    【关闭
#include<iostream> 
 
voidmain(void) 
{ 
   if("test"=="test") 
   { 
     cout<<"相等"; 
   } 
   else 
   { 
     cout<<"不相等"; 
   } 
}

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

  为什么呢?

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

#include<iostream> 
#include<string> 
usingnamespacestd; 
voidmain(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> 
usingnamespacestd; 
voidmain(void)  
{  
   chartest[]="teststr!"; 
   charstr[15]; 
   strcpy(str,test); 
   cout<<str<<endl; 
 
   inta[]={1,2,3,4,5}; 
   intb[5]; 
   memcpy(b,a,sizeof(a)); 
   for(inti=0;i<5;i++) 
   { 
     cout<<b[i]<<","; 
   } 
   cin.get(); 
}

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

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明