std::strcoll
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <cstring>
|
||
int strcoll( const char* lhs, const char* rhs ); |
||
Сравнивает две строки байтов с нулевым завершающим символом в соответствии с текущей локалью, определённой категорией LC_COLLATE.
Параметры
| lhs, rhs | — | указатели на строки байтов с нулевым завершающим символом для сравнения |
Возвращаемое значение
- Отрицательное значение, если
lhsменьше чем (предшествует)rhs. 0, еслиlhsравнаrhs.- Положительное значение, если
lhsбольше чем (следует за)rhs.
Примечание
Порядок сопоставления это словарный порядок: положение буквы в национальном алфавите (её класс эквивалентности) имеет более высокий приоритет, чем её регистр или вариант. Внутри класса эквивалентности символы в нижнем регистре сопоставляются перед их эквивалентами в верхнем регистре, и к символам с диакритическими знаками может применяться специфичный для локали порядок. В некоторых локалях группы символов сравниваются как отдельные единицы сопоставления. Например, "ch" в чешском языке следует за "h" и предшествует "i", а "dzs" в венгерском языке следует за "dz" и предшествует "g".
Пример
Запустить этот код
#include <clocale>
#include <cstring>
#include <iostream>
int main()
{
std::setlocale(LC_COLLATE, "cs_CZ.utf8");
// Альтернативно, ISO-8859-2 (также известная как Latin-2)
// также может работать на некоторых ОС:
// std::setlocale(LC_COLLATE, "cs_CZ.iso88592");
const char* s1 = "hrnec";
const char* s2 = "chrt";
std::cout << "В чешской локали: ";
if (std::strcoll(s1, s2) < 0)
std::cout << s1 << " перед " << s2 << '\n';
else
std::cout << s2 << " перед " << s1 << '\n';
std::cout << "В лексикографическом сравнении: ";
if (std::strcmp(s1, s2) < 0)
std::cout << s1 << " перед " << s2 << '\n';
else
std::cout << s2 << " перед " << s1 << '\n';
}
Вывод:
В чешской локали: hrnec перед chrt
В лексикографическом сравнении: chrt перед hrnec
Смотрите также
| сравнивает две широких строки в соответствии с текущей локалью (функция) | |
[virtual] |
сравнение двух строк с использованием сортировки эту грань правилами Оригинал: compares two strings using this facet's collation rules Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected std::collate функция-элемент)
|
| преобразовывает строку так, чтобы strcmp давала тот же результат, что и strcoll (функция) | |
Документация C по strcoll
| |