u8_strcmp - UTF-8 string comparison function
#include <sys/u8_textprep.h> int u8_strcmp(const char *s1, const char *s2, size_t n, int flag, size_t version, int *errnum);
s1, s2
n
flag
U8_STRCMP_CS
U8_STRCMP_CI_UPPER
U8_STRCMP_CI_LOWER
U8_STRCMP_NFD
U8_STRCMP_NFC
U8_STRCMP_NFKD
U8_STRCMP_NFKC
Only one case-sensitive or case-insensitive option is allowed. Only one Unicode Normalization option is allowed.
version
U8_UNICODE_320
U8_UNICODE_500
U8_UNICODE_LATEST
errnum
EBADF
EILSEQ
EINVAL
ERANGE
The u8_stcmp() function internally processes UTF-8 strings pointed to by s1 and s2 based on the corresponding version of the Unicode Standard and other input arguments and compares the result strings in byte-by-byte, machine ordering.
When multiple comparison options are specified, Unicode Normalization is performed after case-sensitive or case-insensitive processing is performed.
The u8_strcmp() function returns an integer greater than, equal to, or less than 0 if the string pointed to by s1 is greater than, equal to, or less than the string pointed to by s2, respectively.
When u8_strcmp() detects an illegal or incomplete character, such character causes the function to set errnum to indicate the error. Afterward, the comparison is still performed on the resultant strings and a value based on byte-by-byte comparison is always returned.
Example 1 Perform simple default string comparison.
#include <sys/u8_textprep.h> int docmp_default(const char *u1, const char *u2) { int result; int errnum; result = u8_strcmp(u1, u2, 0, 0, U8_UNICODE_LATEST, &errnum); if (errnum == EILSEQ) return (-1); if (errnum == EINVAL) return (-2); if (errnum == EBADF) return (-3); if (errnum == ERANGE) return (-4);
Example 2 Perform upper case based case-insensitive comparison with Unicode 3.2.0 date.
#include <sys/u8_textprep.h> int docmp_caseinsensitive_u320(const char *u1, const char *u2) { int result; int errnum; result = u8_strcmp(u1, u2, 0, U8_STRCMP_CI_UPPER, U8_UNICODE_320, &errnum); if (errnum == EILSEQ) return (-1); if (errnum == EINVAL) return (-2); if (errnum == EBADF) return (-3); if (errnum == ERANGE) return (-4); return (result); }
Example 3 Perform Unicode Normalization Form D.
Perform Unicode Normalization Form D and upper case based case-insensitive comparison with Unicode 3.2.0 date.
#include <sys/u8_textprep.h> int docmp_nfd_caseinsensitive_u320(const char *u1, const char *u2) { int result; int errnum; result = u8_strcmp(u1, u2, 0, (U8_STRCMP_NFD|U8_STRCMP_CI_UPPER), U8_UNICODE_320, &errnum); if (errnum == EILSEQ) return (-1); if (errnum == EINVAL) return (-2); if (errnum == EBADF) return (-3); if (errnum == ERANGE) return (-4); return (result); }
See attributes(5) for descriptions of the following attributes:
|
u8_textprep_str(3C), u8_validate(3C), attributes(5), u8_strcmp(9F), u8_textprep_str(9F), u8_validate(9F)
The Unicode Standard (http://www.unicode.org)
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |