Я долго ломал голову над этим, и до сих пор мне не удалось найти подходящее обоснование.
Win32 API предоставляет функцию для «сравнения логических строк», для которой прототип является:
StrCmpLogicalW( _In_ PCWSTR psz1, _In_ PCWSTR psz2 );
Эта функция затем использует цифры в качестве чисел, а не в виде простого текста и, таким образом, обеспечивает более «логическое» сравнение двух строк.
Тем не менее, большинство функций в Win32 API, кажется, typedef
например, для использования с многобайтовыми или юникодными строками SendMessage
это макрос, который расширяется в SendMessageW
для Unicode или SendMessageA
для кодировок ANSI (в зависимости от того, какой макропереключатель включен), так почему эта функция имеет только расширенную версию? Я искал в интернете, но не смог найти ничего, что объясняло бы это, поэтому я был бы благодарен, если бы кто-нибудь смог меня просветить.
Заранее спасибо!
В документации сказано: «Поведение этой функции и, следовательно, результаты, которые она возвращает, может изменяться от выпуска к выпуску. Его не следует использовать для приложений канонической сортировки». поэтому он не предназначен для общего пользования.
Других решений пока нет …