|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
CompareString
The CompareString function compares two character strings, using the locale specified by the given identifier as the basis for the comparison.
int CompareString(
LCID Locale, // locale identifier DWORD dwCmpFlags, // comparison-style options LPCTSTR lpString1, // pointer to first string int cchCount1, // size, in bytes or characters, of first string LPCTSTR lpString2, // pointer to second string int cchCount2 // size, in bytes or characters, of second string );
Parameters
Locale
Specifies the locale used for the comparison. This parameter can be one of the following predefined locale identifiers:
Value Meaning LOCALE_SYSTEM_DEFAULT The system's default locale. LOCALE_USER_DEFAULT The current user's default locale.
This parameter can also be a locale identifier created by the MAKELCID macro.
dwCmpFlags
A set of flags that indicate how the function compares the two strings. By default, these flags are not set. This parameter can specify zero to get the default behavior, or it can be any combination of the following values:
Value Meaning NORM_IGNORECASE Ignore case. NORM_IGNOREKANATYPE Do not differentiate between Hiragana and Katakana characters. Corresponding Hiragana and Katakana characters compare as equal. NORM_IGNORENONSPACE Ignore nonspacing characters. NORM_IGNORESYMBOLS Ignore symbols. NORM_IGNOREWIDTH Do not differentiate between a single-byte character and the same character as a double-byte character. SORT_STRINGSORT Treat punctuation the same as symbols.
lpString1
Points to the first string to be compared.
cchCount1
Specifies the size, in bytes (ANSI version) or characters (Unicode version), of the string pointed to by the lpString1 parameter. If this parameter is - 1, the string is assumed to be null terminated and the length is calculated automatically.
lpString2
Points to the second string to be compared.
cchCount2
Specifies the size, in bytes (ANSI version) or characters (Unicode version), of the string pointed to by the lpString2 parameter. If this parameter is - 1, the string is assumed to be null terminated and the length is calculated automatically.
Return Values
If the function succeeds, the return value is one of the following values:
Value Meaning 1 The string pointed to by the lpString1 parameter is less in lexical value than the string pointed to by the lpString2 parameter. 2 The string pointed to by lpString1 is equal in lexical value to the string pointed to by lpString2. 3 The string pointed to by lpString1 is greater in lexical value than the string pointed to by lpString2.
If the function fails, the return value is zero. To get extended error information, call GetLastError. GetLastError may return one of the following error codes:
ERROR_INVALID_FLAGS ERROR_INVALID_PARAMETER
Remarks
Notice that if the return value is 2, the two strings are "equal" in the collation sense, though not necessarily identical. To maintain the C run-time convention of comparing strings, the value 2 can be subtracted from a nonzero return value. The meaning of < 0, ==0 and > 0 is then consistent with the C run times. If the two strings are of different lengths, they are compared up to the length of the shortest one. If they are equal to that point, then the return value will indicate that the longer string is greater. For more information about locale identifiers, see Locale Identifiers.
Typically, strings are compared using what is called a "word sort" technique. In a word sort, all punctuation marks and other nonalphanumeric characters, except for the hyphen and the apostrophe, come before any alphanumeric character. The hyphen and the apostrophe are treated differently than the other nonalphanumeric symbols, in order to ensure that words such as "coop" and "co-op" stay together within a sorted list. If the SORT_STRINGSORT flag is specified, strings are compared using what is called a "string sort" technique. In a string sort, the hyphen and apostrophe are treated just like any other nonalphanumeric symbols: they come before the alphanumeric symbols.
The following table shows a list of words sorted both ways:
Word Sort String Sort Word Sort String Sort billet bill's t-ant t-ant bills billet tanya t-aria bill's bills t-aria tanya cannot can't sued sue's cant cannot sues sued can't cant sue's sues con co-op went we're coop con were went co-op coop we're were
The lstrcmp and lstrcmpi functions use a word sort. The CompareString and LCMapString functions default to using a word sort, but use a string sort if their caller sets the SORT_STRINGSORT flag. The CompareString function is optimized to run at the highest speed when dwCmpFlags is set to 0 or NORM_IGNORECASE, and cchCount1 and cchCount2 have the value -1. The CompareString function ignores Arabic Kashidas during the comparison. Thus, if two strings are identical save for the presence of Kashidas, CompareString returns a value of 2; the strings are considered "equal" in the collation sense, though they are not necessarily identical.
See Also
FoldString, GetSystemDefaultLCID, GetUserDefaultLCID, LCMapString, lstrcmp, lstrcmpi, MAKELCID
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
CompareString
Функция CompareString сравнивает две символьных строки, использовавших место действия определялись данным идентификатором как основа для сравнения.
int CompareString(
МЕСТО действия LCID, // место действия идентификатора DWORD dwCmpFlags, // сравнения-стиль выборов LPCTSTR lpString1, // указателя, чтобы сначала нанизывать int cchCount1, // размер, в байтах или символах, первой строки LPCTSTR lpString2, // указателя в строку секунды размера int cchCount2 //, в байтах или символах, строки секунды );
Параметры
Место действия
Определяет место действия использованное для сравнения. Этот параметр может быть одним из следующего встроенного места действия идентификаторов:
Значение Величины LOCALE_SYSTEM_DEFAULT системное встроенное место действия. LOCALE_USER_DEFAULT встроенное место действия текущего потребителя.
Этот параметр может также быть местом действия идентификатора созданным макро MAKELCID.
dwCmpFlags
Набор флагов, которые указывают как функция сравнивает две строки. По умолчанию, эти флаги не установлены. Этот параметр может определить нуль, чтобы получать встроенное поведение, или это может быть любой комбинацией следующего величин:
Оцените Значение NORM_IGNORECASE Игнорировать случай. NORM_IGNOREKANATYPE не различается между Hiragana и символами Katakana. Соответствуя Hiragana и сравнение символов Katakana как равный. NORM_IGNORENONSPACE Игнорирует nonspacing символов. NORM_IGNORESYMBOLS Игнорирует символы. NORM_IGNOREWIDTH не различается между единственным-байтовым символом и тем же символом как двойной-байтовый символ. пунктуация Рассматривать SORT_STRINGSORT такой же как и символы.
lpString1
Точки на первую строку, которые нужно сравниваться.
cchCount1
Определяет размер, в байтах (версия ANSI) или символы (версия Уникода), строки указанной, чтобы параметром lpString1. Если этот параметр - - 1, строка принята, чтобы быть недействительно расторгнутым и длина вычисляется автоматически.
lpString2
Точки на вторую строку, которые нужно сравниваться.
cchCount2
Определяет размер, в байтах (версия ANSI) или символы (версия Уникода), строки указанной, чтобы параметром lpString2. Если этот параметр - - 1, строка принята, чтобы быть недействительно расторгнутым и длина вычисляется автоматически.
Обратные Величины
Если функция добивается успеха, обратная величина - одно из следующего величин:
Значение Величины 1 Строка указанная, чтобы параметром lpString1 - менее в лексической величине чем строка указанных, чтобы параметром lpString2. 2 Строка указанная, чтобы lpString1 равная в лексической величине в строку указанную, чтобы lpString2. 3 Строка указанная, чтобы lpString1 большая в лексической величине чем строка указанных, чтобы lpString2.
Если функция терпит неудачу, обратная величина нулевая. Для того, чтобы расширять информацию ошибки, назовите GetLastError. GetLastError МОЖЕТ возвращать один из следующих кодов ошибки:
ERROR_INVALID_FLAGS ERROR_INVALID_PARAMETER
Замечания
Обратитесь внимание, что если обратная величина - 2, две строки "равные" в значении сопоставления, хотя обязательно не идентичный. Для того, чтобы поддерживать время прогона соглашения C сравнения строк, величина 2 может быть вычтена из ненулевой обратной величины. Значение < 0, ==0 и > 0 - затем соответствующий времени выполнения C. Если две строки - других длин, они сравнены вплоть до длины самого короткого. Если они равняются этой точке, тогда обратная величина укажет, что более длинная строка большая. Более подробно о месте действия идентификаторов, смотри Место действия Идентификаторов.
Обычно, строки сравнены использование, которое названо техника "текстовой сортировки". В текстовой сортировке, вся пунктуация обозначает и другие nonalphanumeric символы, за исключением дефиса и апостроф, предшествуют любому текстовому символу. Дефис и апостроф обращаются иначе чем другие nonalphanumeric символы, для того, чтобы гарантировать эти слово как например, "курятник" и пребывание "кооператива" вместе в пределах отсортированного списка. Если флаг SORT_STRINGSORT определен, строки сравнены использование, которое названо техника "сортировки строки". В сортировке строки, дефис и апостроф обратиться точным подобно любым другим nonalphanumeric символам: они предшествуют текстовым символам.
Следующая таблица показывает список слова отсортировавших оба пути:
Сортировка квартиры Сортировки Строки Строки Word Sort Word Sort выставлять счет t-ant t-ant квартира счетов tanya t-aria счеты счета t-aria tanya не может не может sued sue's судебное дело жаргона не мочь ссср sued не sue's судебное дело ссср жулика кооператива жаргона может пойти мы - жулик курятника были шел курятником кооператива, который мы - были
lstrcmp И lstrcmpi использование функций текстовая сортировка. CompareString И умолчание функций LCMapString в использование текстовой сортировки но использует сортировку строки если их вызывающий оператор устанавливает флаг SORT_STRINGSORT. Функция CompareString оптимизирована, чтобы работать в самой верхней скорости когда dwCmpFlags установлен на 0 или NORM_IGNORECASE, и cchCount1 и cchCount2 имеет величину -1. Функция CompareString игнорирует Arabic Kashidas в течение сравнения. Таким образом, если две строки идентичны за исключением присутствия Kashidas, CompareString возвращает величину 2; строки считаются "равными" в значении сопоставления, все-же они не обязательно идентичны.
Смотри Также
FoldString, GetSystemDefaultLCID, GetUserDefaultLCID, LCMapString, lstrcmp, lstrcmpi, MAKELCID
|
|
|
|
| |