龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

c/c++中字符串常量的不相等性,以及字符串的copy

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
//程序作者:管宁 //站点:www.cndev-lab.com //所有稿件均有版权,如要转载,请务必闻名出处和作者 #include iostream !-- frame contents -- !-- /frame contents -- using namespace std; void main(void) { if("test"=="test")

  //程序作者:管宁
  //站点:www.cndev-lab.com
  //所有稿件均有版权,如要转载,请务必闻名出处和作者
  
  #include <iostream>
   <!-- frame contents -->
<!-- /frame contents --> using namespace std;
  void main(void)
  {
  if("test"=="test")
  {
  cout<<"相等";
  }
  else
  {
  cout<<"不相等";
  }
  }
  

  
  上面的代码我们测试两个内容为test的字符串常量是否相等,按照常理,应该是相等的,这些在一些过程式语言中会得到相等的结论,但在c/c++却不是这样。
  
  为什么呢?
  
  答案在这里:因为字符串常量存储在计算机内存中,两个字符串常量的地址均不相同,所以这样的比较自然就不会得到我们所需要的结果,假如要进行是否相等的比较应该使用strcmp()这个涵数进行比较!
  //程序作者:管宁
  //站点:www.cndev-lab.com
  //所有稿件均有版权,如要转载,请务必闻名出处和作者
  
  #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整数!
  //程序作者:管宁
  //站点:www.cndev-lab.com
  //所有稿件均有版权,如要转载,请务必闻名出处和作者
  
  #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)*sizeof(int));
  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)来处理! 更多文章 更多内容请看C/C++技术专题专题,或
  
精彩图集

赞助商链接