Функцията 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; )
Когато стартирате програмата, изходът ще бъде:
В настоящия локал Армстронг предшества армията