#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)來處理。