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

ความแตกต่างระหว่าง Relational Operator (==) และ std::string::compare() ใน C++


ความแตกต่างหลัก

มีเพียงความแตกต่างเดียวคือ ค่าที่คืน (return value) ภายใน string::operator==() ใช้ string::compare() อยู่แล้ว

  • Relational operator (==): คืน bool แสดงว่า string เท่ากันหรือไม่
  • compare(): คืน int แสดงความสัมพันธ์ของ string ทั้งสอง

ค่าที่คืนของ compare()

  • 0 : string เท่ากัน
  • < 0 : string แรกน้อยกว่า (lexicographically)
  • > 0 : string แรกมากกว่า

กรณีที่ compare() มีประโยชน์

เมื่อต้องการทราบว่าสตริงต่างกันอย่างไร (น้อยกว่าหรือมากกว่า) ไม่ใช่แค่เท่ากันหรือไม่

ตัวอย่าง

#include <iostream>
#include <string>
using namespace std;

int main() {
    string s1 = "Tutorials Point";
    string s2 = "Hello World";
    cout << (s1 == s2) << " ";   // 0 (false)
    cout << s1.compare(s2) << " "; // 1 (s1 > s2)
    cout << s2.compare(s1);         // -1 (s2 < s1)
    return 0;
}

ผลลัพธ์

0 1 -1