utf-8字符串的strcasecmp()无法正常工作(MacOSX、iOS)
我错过了什么utf-8字符串的strcasecmp()无法正常工作(MacOSX、iOS),ios,macos,locale,Ios,Macos,Locale,我错过了什么 // 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()不起作用的原因是 因为您似乎正在使用Obje
// 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");
}
这应该适用于不区分大小写的匹配
↳ 谢谢你的回答。我了解(可以提供十几种方法来克服)如何在objc++中进行不区分大小写的字符串比较。我只是希望,由于当前的c/c++标准仍然缺乏多字节字符串比较,苹果的伙计们在“标准”函数中默默地实现了它。有
mbscasecmp
,尽管我不知道到目前为止它是否是标准库的一部分。