strcasecmp() 用于 utf-8 字符串无法正常工作(MacOSX、iOS)



我错过了什么?

// Excerpt from some .mm source file:
std::set locale(LC_ALL, "ru_RU.UTF-8");
int rv = strcasecmp([@"слово" UTF8String], [@"СЛОВО" UTF8String]);
assert(rv == 0);

我希望不区分大小写的比较能够成功完成,但实际上我正在处理来自strcasecmp的非零返回代码。

strcasecmp()

不起作用的原因是它在多字节字符串上毫无用处。

由于您似乎正在使用Objective-C++

if ([@"слово" caseInsensitiveCompare:@"СЛОВО"] == NSOrderedSame ) {
// strings are equal except for possibly case
NSLog(@"matched");
}

这应该适用于不区分大小写的匹配。

↳ 搜索、比较和排序字符串

最新更新