C ++ strcoll () - Thư viện chuẩn C ++

Hàm strcoll () trong C ++ so sánh hai chuỗi kết thúc rỗng. So sánh dựa trên ngôn ngữ hiện tại được xác định bởi danh mục LC_COLLATE.

strcmp () là đủ cho hầu hết các so sánh chuỗi, nhưng khi xử lý các ký tự unicode, đôi khi có một số sắc thái nhất định làm cho việc so sánh chuỗi byte-to-byte không chính xác.

Ví dụ: nếu bạn đang so sánh hai chuỗi bằng tiếng Tây Ban Nha, chúng có thể chứa các ký tự được nhấn trọng âm như á, é, í, ó, ú, ü, ñ, ¿, ¡, v.v.

Theo mặc định, các ký tự được đánh dấu như vậy đứng sau toàn bộ bảng chữ cái a, b, c… z. So sánh như vậy sẽ bị lỗi bởi vì các trọng âm khác nhau của a thực sự phải đến trước b.

strcoll () sử dụng ngôn ngữ hiện tại để thực hiện phép so sánh mang lại kết quả chính xác hơn trong những trường hợp như vậy.

Nó được định nghĩa trong tệp tiêu đề.

nguyên mẫu strcoll ()

 int strcoll (const char * lhs, const char * rhs);

Hàm strcoll () nhận hai đối số: lhs và rhs. Nó so sánh nội dung của lhs và rhs dựa trên ngôn ngữ hiện tại của danh mục LC_COLLATE.

Tham số strcoll ()

  • lhs và rhs: Con trỏ tới các chuỗi kết thúc bằng rỗng để so sánh.

strcoll () Giá trị trả về

Hàm strcoll () trả về một:

  • giá trị dương nếu ký tự khác biệt đầu tiên trong lhs lớn hơn ký tự tương ứng trong rhs.
  • giá trị âm nếu ký tự khác biệt đầu tiên trong lhs nhỏ hơn ký tự tương ứng trong rhs.
  • 0 nếu lhs và rhs bằng nhau.

Ví dụ: Hàm strcoll () hoạt động như thế nào?

 #include #include using namespace std; int main() ( char lhs() = "Armstrong"; char rhs() = "Army"; int result; result = strcoll(lhs,rhs); cout < 0) cout << rhs << " precedes " << lhs << endl; else if (result < 0) cout << lhs << " precedes " << rhs << endl; else cout << lhs << " and " << rhs << " are same" << endl; return 0; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 Ở ngôn ngữ hiện tại, Armstrong đi trước Quân đội

thú vị bài viết...