Странное поведение от 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: %in", (int)res);

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

1 3

1 ответ:

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

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