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

Функція 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; )

Коли ви запускаєте програму, результат буде:

 В даний час Армстронг передує армії

Цікаві статті...