日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

《挑战30天C++入门极限》C/C++中字符串常量的不相等性及字符串的Copy

發布時間:2024/10/12 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《挑战30天C++入门极限》C/C++中字符串常量的不相等性及字符串的Copy 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?

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

?
?

轉載于:https://www.cnblogs.com/landv/p/11184730.html

總結

以上是生活随笔為你收集整理的《挑战30天C++入门极限》C/C++中字符串常量的不相等性及字符串的Copy的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。