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++技术专题专题,或
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++技术专题专题,或
- ››字符串分割
- ››字符串格式化工具
- ››字符串近似匹配算法
- ››字符串分割的两种方法
- ››字符串类数据列类型(参考)
- ››字符串的一些操作
- ››字符串中文的问题
- ››字符串中包含双引号
- ››字符串函数大全
更多精彩
赞助商链接