| 導購 | 订阅 | 在线投稿
分享
 
 
 

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

來源:互聯網  2008-06-01 01:57:40  評論

//程序作者:管甯

//站點:www.cndev-lab.com

//所有稿件均有版權,如要轉載,請務必聞名出處和作者

#include <iostream>

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++中字符串常量的不相等性,以及字符串的copy
更多內容請看C/C++技術專題專題,或

//程序作者:管甯 //站點:www.cndev-lab.com //所有稿件均有版權,如要轉載,請務必聞名出處和作者 #include <iostream> 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)來處理! [url=/bbs/detail_1785085.html][img]http://image.wangchao.net.cn/it/1323424777825.gif[/img][/url] 更多內容請看C/C++技術專題專題,或
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有