當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ strcoll()用法及代碼示例


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() 函數有兩個參數:lhsrhs。它根據LC_COLLATE 類別的當前語言環境比較lhsrhs 的內容。

參數:

  • lhsrhs :指向要比較的空終止字符串的指針。

返回:

strcoll() 函數返回:

  • 如果 lhs 中的第一個不同字符大於 rhs 中的相應字符,則為正值。
  • 如果 lhs 中的第一個不同字符小於 rhs 中的相應字符,則為負值。
  • 如果 lhsrhs 相等,則為 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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。