C ++ strcoll () - Стандартная библиотека C ++

Функция strcoll () в C ++ сравнивает две строки с нулевым завершением. Сравнение основано на текущей локали, определенной категорией LC_COLLATE.

strcmp () достаточно для большинства сравнений строк, но при работе с символами Юникода иногда есть определенные нюансы, которые делают некорректное побайтовое сравнение строк.

Например, если вы сравниваете две строки на испанском языке, они могут содержать символы с ударением, такие как á, é, í, ó, ú, ü, ñ, ¿, ¡и т. Д.

По умолчанию такие символы с ударением идут после всего алфавита a, b, c… z. Такое сравнение было бы ошибочным, потому что разные акценты a должны стоять перед b.

strcoll () использует текущий языковой стандарт для выполнения сравнения, дающего в таких случаях более точный результат.

Это определено в заголовочном файле.

strcoll () прототип

 int strcoll (const char * lhs, const char * rhs);

Функция strcoll () принимает два аргумента: lhs и rhs. Он сравнивает содержимое lhs и rhs на основе текущей локали категории LC_COLLATE.

Параметры strcoll ()

  • lhs и rhs: указатель на строки с завершающим нулем для сравнения.

strcoll () Возвращаемое значение

Функция strcoll () возвращает:

  • положительное значение, если первый различающийся символ в левой части больше, чем соответствующий знак в правой части.
  • отрицательное значение, если первый отличающийся символ в левой части меньше соответствующего символа в правой части.
  • 0, если левая и правая равны.

Пример: как работает функция strcoll ()?

 #include #include using namespace std; int main() ( char lhs() = "Armstrong"; char rhs() = "Army"; int result; result = strcoll(lhs,rhs); cout < 0) cout << rhs << " precedes " << lhs << endl; else if (result < 0) cout << lhs << " precedes " << rhs << endl; else cout << lhs << " and " << rhs << " are same" << endl; return 0; )

Когда вы запустите программу, вывод будет:

 В текущем регионе Армстронг предшествует армии

Интересные статьи...