Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
utf-8字符串的strcasecmp()无法正常工作(MacOSX、iOS)_Ios_Macos_Locale - Fatal编程技术网

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
,尽管我不知道到目前为止它是否是标准库的一部分。