std::strcoll
Материал из cppreference.com
Определено в заголовочном файле <cstring> | ||
int strcoll(constchar* lhs, constchar* 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"); constchar* s1 ="hrnec";constchar* s2 ="chrt"; std::cout<<"В чешской локали: ";if(std::strcoll(s1, s2)<0)std::cout<< s1 <<" перед "<< s2 <<'\n';elsestd::cout<< s2 <<" перед "<< s1 <<'\n'; std::cout<<"В лексикографическом сравнении: ";if(std::strcmp(s1, s2)<0)std::cout<< s1 <<" перед "<< s2 <<'\n';elsestd::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 |