Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Differences between C++ string == and compare()?


ใน C++ เราสามารถเปรียบเทียบสตริงสองตัวได้โดยใช้ compare() function และ == operator คำถามคือ ทำไมถึงมีสองวิธีต่างกัน? มีความแตกต่างหรือไม่?

มีความแตกต่างพื้นฐานบางอย่างระหว่าง compare() และ == operator ใน C++ ตัวดำเนินการ == ถูก overload สำหรับ string เพื่อตรวจสอบว่าสตริงทั้งสองเหมือนกันหรือไม่ ถ้าเหมือนกันจะคืนค่า 1 ไม่เหมือนกันคืนค่า 0 ดังนั้นมันทำงานแบบ Boolean type function

ฟังก์ชัน compare() คืนค่าสองอย่างที่แตกต่างกัน ถ้าทั้งสองเท่ากัน จะคืนค่า 0 ถ้าพบ mismatch ที่ character s และ t และเมื่อ s น้อยกว่า t จะคืนค่า -1 มิฉะนั้นเมื่อ s มากกว่า t จะคืนค่า +1 มันตรวจสอบการ match โดยใช้ ASCII code

ลองดูตัวอย่างเพื่อเข้าใจการอภิปรายข้างต้น

ตัวอย่างโค้ด

#include <iostream>
using namespace std;
int main() {
    string str1 = "Hello";
    string str2 = "Help";
    string str3 = "Hello";
    cout << "Comparing str1 and str2 using ==, Res: " << (str1 == str2) << endl;//0 for no match
    cout << "Comparing str1 and str3 using ==, Res: " << (str1 == str3) << endl;//1 for match
    cout << "Comparing str1 and str2 using compare(), Res: " << str1.compare(str2) << endl;//checking smaller and greater
    cout << "Comparing str1 and str3 using compare(), Res: " << str1.compare(str3) << endl;//0 for match
}

ผลลัพธ์

Comparing str1 and str2 using ==, Res: 0
Comparing str1 and str3 using ==, Res: 1
Comparing str1 and str2 using compare(), Res: -1
Comparing str1 and str3 using compare(), Res: 0