字串的比較和string物件比較

2021-09-01 02:57:31 字數 1249 閱讀 1725

在寫程式的過程中,經常會遇到要比較兩個字串是否相等的情況。如果要比較的物件是char*字串,則利用

int strcmp(const char* s1,const char* s2)

當s1s2時,返回正數。

即:兩個字串自左向右逐個字元相比(按ascii值大小相比較),直到出現不同的字元或遇'\0'為止。如:

"a""a" "computer">"compare"

特別注意:strcmp(const char *s1,const char * s2)這裡面只能比較字串,即可用於比較兩個字串常量,或比較陣列和字串常量,不能比較數字等其他形式的引數。

ansi標準規定,返回值為正數,負數,0 。而確切數值是依賴不同的c實現的。

如果要比較的物件是兩個string,則利用函式compare()。若要比較string s1和s2則寫為:s1.compare(s2),若返回值為0,則兩者相等。

注意:在比較兩個字串時不能利用符號「==」,「==」符號比較的是兩個字串的位址是否相等,此前在這個問題上犯過錯誤,謹記!謹記!

若是比較兩個字元,則可以用"=="直接進行比較~        

但在比較兩個string物件時是可以利用「==」的,相等的話,則表示式的返回值為1,不等為0。

舉個簡單的例子:

#include#includeusing namespace std;

int main() {

char a = "aaa",b="aaa";

string a = "aaa", b = "aaa";

cout <

cout <

cout <

cout << "利用strcmp()比較a,b兩個字串,結果是(相等為0,不等非0):"<

輸出結果為:

很容易理解a是乙個指向字串的指標,但同時也應該知道包含引號在內的"aaa"字串本身也是乙個位址,指向該字串的首元素,故而會有 *"aaa"的結果為a。

對於string物件而言,則沒這麼多注意事項。。。

自我補充:

當需要比較兩個等長的字串,可以不區分大小寫。用到的方法是將兩個字串都轉換為小寫或者大寫。(a-z > 65-90)

(a-z > 97-122)

C 字串物件(string)

這次去北京理工參加複試,當時的上機題目的第2題是一道字串有關的題目 大致的題目是這樣的,在乙個已有序列中有eric,machel,peter,要求插入 jhon,以後按照字母順序顯示排好,並且可以多次輸入,如果有相同的提示重新輸入。當時的我對string類並不了解,所以用的是鍊錶和動態生成字串的方式...

string物件和C風格字串

我們都知道允許使用字串字面值來初始化string物件 string s hello world c 規定,任何出現字串字面值的地方都可以用以空字元結束的字元陣列來替代 上述性質反過來並不成立 如果程式的某處需要乙個c風格字串,無法直接用string物件來替代它。例如 不能使用string物件直接初始...

Char型和string型字串比較整理

1.賦值 char賦值 char ch1 give me char ch2 a cup strcpy ch1,ch2 cout ch1 輸出結果 ch1 a cup string賦值 string str1 give me string str2 a cup str1 str2 cout str1 ...