|
//程序作者:管宁 RfCLinux联盟 //站点:www.cndev-lab.com RfCLinux联盟 //所有稿件均有版权,如要转载,请务必著名出处和作者 RfCLinux联盟 RfCLinux联盟 #include <iostream> RfCLinux联盟 using namespace std; RfCLinux联盟 void main(void) RfCLinux联盟 { RfCLinux联盟 if("test"=="test") RfCLinux联盟 { RfCLinux联盟 cout<<"相等"; RfCLinux联盟 } RfCLinux联盟 else RfCLinux联盟 { RfCLinux联盟 cout<<"不相等"; RfCLinux联盟 } RfCLinux联盟 } RfCLinux联盟
RfCLinux联盟 RfCLinux联盟 上面的代码我们测试两个内容为test的字符串常量是否相等,按照常理,应该是相等的,这些在一些过程式语言中会得到相等的结论,但在c/c++却不是这样。 RfCLinux联盟 RfCLinux联盟 为什么呢? RfCLinux联盟 RfCLinux联盟 答案在这里:因为字符串常量存储在计算机内存中,两个字符串常量的地址均不相同,所以这样的比较自然就不会得到我们所需要的结果,如果要进行是否相等的比较应该使用strcmp()这个涵数进行比较! RfCLinux联盟 //程序作者:管宁 RfCLinux联盟 //站点:www.cndev-lab.com RfCLinux联盟 //所有稿件均有版权,如要转载,请务必著名出处和作者 RfCLinux联盟 RfCLinux联盟 #include <iostream> RfCLinux联盟 #include <string> RfCLinux联盟 using namespace std; RfCLinux联盟 void main(void) RfCLinux联盟 { RfCLinux联盟 if(strcmp("test","test")==0) RfCLinux联盟 { RfCLinux联盟 cout<<"相等"; RfCLinux联盟 } RfCLinux联盟 else RfCLinux联盟 { RfCLinux联盟 cout<<"不相等"; RfCLinux联盟 } RfCLinux联盟 cin.get(); RfCLinux联盟 } RfCLinux联盟
RfCLinux联盟 strcmp()的函数原形是,int strcmp(const char* str1,const char* str) RfCLinux联盟 RfCLinux联盟 相当将会返回一个等于0的整数,不相等的时候将会返回一个非0整数! RfCLinux联盟 //程序作者:管宁 RfCLinux联盟 //站点:www.cndev-lab.com RfCLinux联盟 //所有稿件均有版权,如要转载,请务必著名出处和作者 RfCLinux联盟 RfCLinux联盟 #include <iostream> RfCLinux联盟 #include <string> RfCLinux联盟 using namespace std; RfCLinux联盟 void main(void) RfCLinux联盟 { RfCLinux联盟 char test[]="test str!"; RfCLinux联盟 char str[15]; RfCLinux联盟 strcpy(str,test); RfCLinux联盟 cout<<str<<endl; RfCLinux联盟 RfCLinux联盟 int a[]={1,2,3,4,5}; RfCLinux联盟 int b[5]; RfCLinux联盟 memcpy(b,a,sizeof(a)*sizeof(int)); RfCLinux联盟 for(int i=0;i<5;i++) RfCLinux联盟 { RfCLinux联盟 cout<<b[i]<<","; RfCLinux联盟 } RfCLinux联盟 cin.get(); RfCLinux联盟 } RfCLinux联盟
RfCLinux联盟 RfCLinux联盟 上面的代码中的strcpy用来处理字符串数学组的copy,由于字符串数组属于const char*也就是常量指针所以是不能用a="test str!";的方式赋值的,接在后面的memcpy用于处理非\0结尾的数组的copy处理,memcpy第三个参数是设置b在内存中所需要的内存空间大小所以用sizeof(a)*sizeof(int)来处理!
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论 |
|