Странное поведение из CFStringCompareWithOptions

Я пытаюсь выяснить, как именно я могу соответствовать первым n символы строки с другим. Вот некоторый код, который я получил на данный момент:

CFStringRef myStringRef = CFSTR("hello");
CFStringRef otherStringRef = CFSTR("helloworld");

CFIndex cmpChars = CFStringGetLength(myStringRef);

CFComparisonResult res = CFStringCompareWithOptions(myStringRef, otherStringRef, CFRangeMake(0, cmpChars), kCFCompareCaseInsensitive);

printf("Res: %i\n", (int)res);

Я получаю значение res как -1что означает «меньше чем» в соответствии с документацией. Конечно, так как я указал диапазон, который должен соответствовать, он должен принимать во внимание только этот диапазон?

3

Решение

Документация может быть более понятной, но диапазон применяется только к первой строке, а не ко второй. Вот ссылка на старое сообщение в списке рассылки. Что вы не можете сказать из архива, но я знаю из моего личного архива, что тот парень, который так сказал, был инженером Apple.

Чтобы делать то, что вы хотите, вам может понадобиться CFStringCreateWithSubstring тоже.

4

Другие решения

Других решений пока нет …