Функція strcoll () у C ++ порівнює два нульові завершувальні рядки. Порівняння базується на поточній локалі, визначеній категорією LC_COLLATE.
strcmp () достатньо для більшості порівнянь рядків, але, маючи справу з символами Unicode, іноді є певні нюанси, які роблять побітове порівняння рядків неправильним.
Наприклад, якщо ви порівнюєте два рядки іспанською мовою, вони можуть містити символи з наголосом, такі як á, é, í, ó, ú, ü, ñ, ¿, ¡тощо.
За замовчуванням такі підкреслені символи ставляться після цілого алфавіту 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 () повертає:
- додатне значення, якщо перший символ, що відрізняється в lhs, більший, ніж відповідний символ у rhs.
- негативне значення, якщо перший символ, що відрізняється в lhs, менший за відповідний символ у rhs.
- 0, якщо lhs і rhs рівні.
Приклад: Як працює функція 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; )
Коли ви запускаєте програму, результат буде:
В даний час Армстронг передує армії