C++ 中的strcoll() 函數比較兩個空終止字符串。比較基於LC_COLLATE 類別定義的當前語言環境。
strcmp() 對於大多數字符串比較來說已經足夠了,但是在處理 unicode 字符時,有時會有某些細微差別導致 byte-to-byte 字符串比較不正確。
例如,如果您要比較西班牙語中的兩個字符串,它們可以包含重音字符,如 á、é、í、ó、ú、ü、ñ、¿、¡ 等。
默認情況下,這些重音字符出現在 a、b、c...z 的整個字母表之後。這種比較是錯誤的,因為 a 的不同重音實際上應該在 b 之前。
strcoll() 使用當前語言環境執行比較,在這種情況下給出更準確的結果。
它在<cstring> 頭文件中定義。
strcoll()原型
int strcoll( const char* lhs, const char* rhs );
strcoll() 函數有兩個參數:lhs
和 rhs
。它根據LC_COLLATE 類別的當前語言環境比較lhs
和rhs
的內容。
參數:
lhs
和rhs
:指向要比較的空終止字符串的指針。
返回:
strcoll() 函數返回:
- 如果
lhs
中的第一個不同字符大於rhs
中的相應字符,則為正值。 - 如果
lhs
中的第一個不同字符小於rhs
中的相應字符,則為負值。 - 如果
lhs
和rhs
相等,則為 0。
示例:strcoll() 函數如何工作?
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char lhs[] = "Armstrong";
char rhs[] = "Army";
int result;
result = strcoll(lhs,rhs);
cout << "In the current locale ";
if(result > 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;
}
運行程序時,輸出將是:
In the current locale Armstrong precedes Army
相關用法
- C++ strcoll()用法及代碼示例
- C++ strchr()用法及代碼示例
- C++ strcat()用法及代碼示例
- C++ strcat() vs strncat()用法及代碼示例
- C++ strcmp()用法及代碼示例
- C++ strcspn()用法及代碼示例
- C++ strcpy()用法及代碼示例
- C++ string::length()用法及代碼示例
- C++ string::npos用法及代碼示例
- C++ strncat()用法及代碼示例
- C++ strstr()用法及代碼示例
- C++ strtok()用法及代碼示例
- C++ strtod()用法及代碼示例
- C++ strtoimax()用法及代碼示例
- C++ strpbrk()用法及代碼示例
- C++ strxfrm()用法及代碼示例
- C++ strspn()用法及代碼示例
- C++ strncmp()用法及代碼示例
- C++ strtoull()用法及代碼示例
- C++ string at()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ strcoll()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。