The wcscoll() function is defined in <cwchar> header file.
wcscoll() prototype
int wcscoll( const wchar_t* lhs, const wchar_t* rhs );
The wcscoll() function takes two arguments: lhs and rhs. It compares the contents of lhs and rhs based on the current locale of LC_COLLATE category.
wcscoll() Parameters
- lhs and rhs: Pointer to the null terminated wide strings to compare.
wcscoll() Return value
The wcscoll() function returns a:
- positive value if the first differing character in lhs is greater than the corresponding character in rhs.
- negative value if the first differing character in lhs is less than the corresponding character in rhs.
- 0 if lhs and rhs are equal.
Example: How wcscoll() function works?
#include <iostream>
#include <clocale>
#include <cwchar>
using namespace std;
void compare(const wchar_t* p1, const wchar_t* p2)
{
if(wcscoll(p1, p2) < 0)
wcout << p1 << L" precedes " << p2 << '\n';
else if (std::wcscoll(p1, p2) > 0)
wcout << p2 << L" precedes " << p1 << '\n';
else
wcout << p2 << L" equals " << p1 << '\n';
}
int main()
{
wchar_t str1[] = L"årtist";
wchar_t str2[] = L"äpple";
setlocale(LC_ALL, "en_US.utf8");
wcout << L"In the American locale: ";
compare(str1, str2);
setlocale(LC_ALL, "sv_SE.utf8");
wcout << L"In the Swedish locale: ";
compare(str1, str2);
return 0;
}
When you run the program, the output will be:
In the American locale: äpple precedes årtist In the Swedish locale: årtist precedes äpple