std::wcscoll
| Определено в заголовочном файле <cwchar>
|
||
int wcscoll( const wchar_t* lhs, const wchar_t* rhs ); |
||
Сравнивает две широкие строки с нулевым завершающим символом в соответствии с языковым стандартом, последним установленным std::setlocale, как определено категорией LC_COLLATE.
Параметры
| lhs, rhs | — | указатели на широкие строки с нулевым завершающим символом для сравнения |
Возвращаемое значение
Отрицательное значение, если lhs меньше чем (предшествует) rhs.
0, если lhs равна rhs.
Положительное значение, если lhs больше чем (следует за) rhs.
Примечание
Порядок сопоставления это словарный порядок: положение буквы в национальном алфавите (её класс эквивалентности) имеет более высокий приоритет, чем её регистр или вариант. Внутри класса эквивалентности символы в нижнем регистре сопоставляются перед их эквивалентами в верхнем регистре, и к символам с диакритическими знаками может применяться специфичный для локали порядок. В некоторых локалях группы символов сравниваются как отдельные единицы сопоставления. Например, "ch" в чешском языке следует за "h" и предшествует "i", а "dzs" в венгерском языке следует за "dz" и предшествует "g".
Пример
#include <clocale>
#include <iostream>
void try_compare(const wchar_t* p1, const wchar_t* p2)
{
if (std::wcscoll(p1, p2) < 0)
std::wcout << p1 << L" перед " << p2 << '\n';
else
std::wcout << p2 << L" перед " << p1 << '\n';
}
int main()
{
std::setlocale(LC_ALL, "en_US.utf8");
std::wcout << L"В американской локали: ";
try_compare(L"hrnec", L"chrt");
std::setlocale(LC_COLLATE, "cs_CZ.utf8");
std::wcout << L"В чешской локали: ";
try_compare(L"hrnec", L"chrt");
std::setlocale(LC_COLLATE, "en_US.utf8");
std::wcout << L"В американской локали: ";
try_compare(L"år", L"ängel");
std::setlocale(LC_COLLATE, "sv_SE.utf8");
std::wcout << L"В шведской локали: ";
try_compare(L"år", L"ängel");
}
Вывод:
В американской локали: chrt before hrnec
В чешской локали: hrnec before chrt
В американской локали: ängel before år
В шведской локали: år before ängel
Смотрите также
| сравнивает две строки в соответствии с текущей локалью (функция) | |
[virtual] |
сравнение двух строк с использованием сортировки эту грань правилами Оригинал: compares two strings using this facet's collation rules Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected std::collate функция-элемент)
|
| преобразует широкую строку так, чтобы wcscmp давала тот же результат, что и wcscoll (функция) | |
Документация C по wcscoll
| |