std::wcscoll
Определено в заголовке <cwchar> | ||
|---|---|---|
int wcscoll( const wchar_t* lhs, const wchar_t* rhs ); |
Сравнивает две строковые переменные широкого типа с нулевым окончанием в соответствии с локалью, установленной недавно std::setlocale, как определено категорией LC_COLLATE.
Параметры
| lhs, rhs | - | указатели на сравниваемые строковые переменные широкого типа с нулевым окончанием |
Возвращаемое значение
Отрицательное значение, если lhs меньше (предшествует) rhs.
Нулевое значение, если 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 << " before " << p2 << '\n';
else
std::wcout << p2 << " before " << p1 << '\n';
}
int main()
{
std::setlocale(LC_ALL, "en_US.utf8");
std::wcout << "In the American locale: ";
try_compare(L"hrnec", L"chrt");
std::setlocale(LC_COLLATE, "cs_CZ.utf8");
std::wcout << "In the Czech locale: ";
try_compare(L"hrnec", L"chrt");
std::setlocale(LC_COLLATE, "en_US.utf8");
std::wcout << "In the American locale: ";
try_compare(L"år", L"ängel");
std::setlocale(LC_COLLATE, "sv_SE.utf8");
std::wcout << "In the Swedish locale: ";
try_compare(L"år", L"ängel");
}Вывод:
In the American locale: chrt before hrnec In the Czech locale: hrnec before chrt In the American locale: ängel before år In the Swedish locale: år before ängel
См. также
| сравнивает две строки в соответствии с текущей локалью (функция) |
|
|
[virtual] | сравнивает две строки по правилам сортировки данного объекта (виртуальная защищенная функция-член std::collate<CharT>) |
преобразует строку широкого типа, чтобы wcscmp дало тот же результат, что и wcscoll (функция) |
|
Документация на C для wcscoll |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/wide/wcscoll