ใน 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