WEB开发网
开发学院软件开发C++ C/C++中字符串常量的不相等性及字符串的Copy 阅读

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

 2008-03-08 21:34:25 来源:WEB开发网   
核心提示:#include <iostream> void main(void) { if("test"
#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)来处理。
更多文章 更多内容请看C/C++技术专题专题,或

Tags:字符串 常量 相等

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接