函数
GLibstrncasecmp
已弃用:2.2
声明 [src]
gint
g_strncasecmp (
const gchar* s1,
const gchar* s2,
guint n
)
说明 [src]
不区分大小写的字符串比较,对应于在支持它的平台上的标准 strncasecmp()
函数。它类似于 g_strcasecmp()
,只是它只比较字符串的前 n
个字符。
已弃用:自 2.2 版
g_strncasecmp()
的问题在于它通过调用 toupper()
/tolower()
来进行比较。这些函数是特定于区域设置的,并对单个字节操作。然而,由于字符可能是多字节的,因此不可能通过对字节进行操作从国际化的角度正确处理事物。因此,如果保证你的字符串是 ASCII,那么 g_strncasecmp()
会中断,因为它区分区域设置;如果你的字符串本地化了,那么它会中断,因为它根本不适用于许多编码,包括 UTF-8、EUC-JP 等。
因此,有两种替代技术:g_ascii_strncasecmp()
,它只适用于 ASCII 且不区分区域设置,以及 g_utf8_casefold()
,后面跟对所得字符串执行的 strcmp()
,这对不区分大小写的 UTF-8 排序非常有用。