Toán tử quan hệ
#include <string>
// So sánh hai chuỗi string
bool operator==( const string& lhs, const string& rhs );
bool operator!=( const string& lhs, const string& rhs );
bool operator< ( const string& lhs, const string& rhs );
bool operator> ( const string& lhs, const string& rhs );
bool operator<=( const string& lhs, const string& rhs );
bool operator>=( const string& lhs, const string& rhs );
// So sánh string với C-string
bool operator==( const string& lhs, const char* rhs );
bool operator!=( const string& lhs, const char* rhs );
bool operator< ( const string& lhs, const char* rhs );
bool operator> ( const string& lhs, const char* rhs );
bool operator<=( const string& lhs, const char* rhs );
bool operator>=( const string& lhs, const char* rhs );
// So sánh C-string với string
bool operator==( const char* lhs, const string& rhs );
bool operator!=( const char* lhs, const string& rhs );
bool operator< ( const char* lhs, const string& rhs );
bool operator> ( const char* lhs, const string& rhs );
bool operator<=( const char* lhs, const string& rhs );
bool operator>=( const char* lhs, const string& rhs );
So sánh hai chuỗi std::string với nhau.
Tham số
lhs
- Chuỗi, hoặc chuỗi ký tự C-style ở bên trái toán tử.
rhs
- Chuỗi, hoặc chuỗi ký tự C-style ở bên phải toán tử.
Giá trị trả về
- Trả về giá trị
bool
biểu thị kết quả của phép so sánh.true
: Nếu biểu thức so sánh là đúng.false
: Nếu biểu thức so sánh là sai.
Đặc điểm
- Các toán tử quan hệ so sánh chuỗi theo thứ tự từ điển, phân biệt chữ hoa chữ thường (case-sensitive).
- Khi so sánh một chuỗi std::string với một chuỗi ký tự C-style, chuỗi C-style sẽ được ngầm định chuyển đổi thành std::string trước khi thực hiện so sánh.
- Các toán tử quan hệ không thay đổi nội dung của các chuỗi được so sánh.
- Các toán tử quan hệ thường được sử dụng để:
- Kiểm tra xem hai chuỗi có bằng nhau hay không.
- Sắp xếp các chuỗi theo thứ tự từ điển.
- Tìm kiếm chuỗi trong một tập hợp các chuỗi.
- Thực hiện các thao tác so sánh chuỗi trong các cấu trúc điều khiển (ví dụ: if, while, ...).
Thứ tự từ điển (Lexicographical Order)
Các toán tử quan hệ so sánh hai chuỗi theo thứ tự từ điển, nghĩa là:
- So sánh từng cặp ký tự tương ứng của hai chuỗi, bắt đầu từ ký tự đầu tiên.
- Nếu hai ký tự khác nhau, chuỗi nào có ký tự nhỏ hơn (theo mã ASCII hoặc mã hóa ký tự đang sử dụng) sẽ được coi là nhỏ hơn.
- Nếu tất cả các ký tự tương ứng đều bằng nhau, chuỗi nào ngắn hơn sẽ được coi là nhỏ hơn.
- Nếu cả hai chuỗi có cùng độ dài và tất cả các ký tự tương ứng đều bằng nhau, hai chuỗi được coi là bằng nhau.
Phân biệt với compare()
- Các toán tử quan hệ trả về giá trị
bool
(true hoặc false). compare()
trả về giá trị số nguyên (int) cho biết mối quan hệ chi tiết hơn giữa hai chuỗi (nhỏ hơn, lớn hơn, hoặc bằng nhau).compare()
cung cấp nhiều tùy chọn hơn để so sánh một phần của chuỗi.- Các toán tử quan hệ thường dễ đọc và dễ sử dụng hơn cho các trường hợp so sánh đơn giản.
Ví dụ
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string str1 = "apple";
std::string str2 = "banana";
std::string str3 = "apple";
const char* cstr = "apple";
// So sánh == (bằng)
if (str1 == str2) {
std::cout << "str1 == str2\n"; // Không in ra
}
if (str1 == str3) {
std::cout << "str1 == str3\n"; // In ra
}
if (str1 == cstr) {
std::cout << "str1 == cstr" << std::endl; // In ra
}
// So sánh != (khác)
if (str1 != str2) {
std::cout << "str1 != str2\n"; // In ra
}
// So sánh < (nhỏ hơn)
if (str1 < str2) {
std::cout << "str1 < str2\n"; // In ra
}
// So sánh > (lớn hơn)
if (str2 > str1) {
std::cout << "str2 > str1\n"; // In ra
}
// So sánh <= (nhỏ hơn hoặc bằng)
if (str1 <= str3)
{
std::cout << "str1 <= str3" << std::endl; //in ra
}
// So sánh >= (lớn hơn hoặc bằng)
std::string str4 = "app";
if(str1 >= str4){
std::cout << "str1 >= str4" << std::endl; //in ra
}
return 0;
}
Các hàm liên quan
compare | So sánh chuỗi hiện tại với một chuỗi khác |
find | Tìm kiếm sự xuất hiện đầu tiên của một chuỗi con, một ký tự, hoặc một chuỗi ký tự C-style bên trong một chuỗi std::string |
= | Gán một giá trị mới cho một đối tượng std::string, thay thế nội dung hiện tại của nó |
swap | Hoán đổi nội dung của hai chuỗi std::string một cách hiệu quả |