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用于处理惩罚非\0末了的数组的copy处理惩罚,memcpy第三个参数是配置b在内存中所需要的内存空间巨细所以用sizeof(a)*sizeof(int)来处理惩罚。