C++中string型別與char*型別的字串比較剖析
阿新 • • 發佈:2019-02-09
C++中的string字串可以直接進行比較,事實上strcmp()的兩個引數是char*型別的,也就是說是比較C字串的(即char陣列),於是就不能用於比較string型別了
int strcmp( const char *string1, const char *string2 ); Value Relationship of string1 to string2 < 0 string1 less than string2 0 string1 identical to string2 > 0 string1 greater than string2
但是string物件通過string類的方法 c_str() 就是可以進行比較的了
string型別的直接比較 strcmp比較char*字串或者是通過c_str()轉換來的char*字串 都是比較ASCII碼
如果直接比較char*字串的話就會發現 是在比較記憶體中的位置,在前者較大
#include <iostream> #include<cstring> using namespace std; int main() { string s = "abc"; string s1 = "abd"; if(s<s1) cout<<"string 型別 s = abc s1 = abd 直接比較 s小於s1"<<endl<<endl; if(strcmp(s.c_str(),s1.c_str())<0) cout<<"string 型別 s = abc s1 = abd 用c_str()轉換成char*後strcmp比較 s小於s1"<<endl<<endl; cout<<"char* 陣列比較"<<endl<<endl; char s2[10] = "abc"; char s3[10] = "def"; if(strcmp(s2,s3)<0) cout<<"strcmp比較 s2小於s3"<<endl<<endl; if(s2>s3) cout<<"直接比較s2大於s3,明顯是按照地址先後進行比較的"; return 0; }
以上是例程