Open In App

wcscoll() function in C++

wcscoll() function in C++ compares two null-terminated string. The comparison is based on the current locale defined by the LC_COLLATE category.
This function starts comparing the first character of each string. They are considered as equal until the characters differ or until a null wide character signaling the end of a string is reached.

Syntax:

int wcscoll( const wchar_t* wcs1, const wchar_t* wcs2 )

Parameters: The function accepts two mandatory parameters which are described below:

  1. wcs1: It is a pointer to the null terminated wide strings to compare.
  2. wcs2: It is a pointer to the null terminated wide strings to compare.

Return value : The function returns three value as below:

  1. 0, if values indicates that both strings are equal.
  2. Positive value, if the first character that is different in wcs1 is greater than the corresponding character in wcs2.
  3. Negative value, if the first character that is different in wcs1 is less than the corresponding character in wcs2.

Below programs illustrate the above function:
Program 1 :




// C++ program to illustrate
// wcsoll() function
#include <bits/stdc++.h>
using namespace std;
  
// function to compare two strings
void comparetwo(const wchar_t* wcs1, const wchar_t* wcs2)
{
    // pointer wcs1 points string
    // pointer wcs2 points string_
    if (wcscoll(wcs1, wcs2) < 0)
        wcout << wcs1 << L" precedes " << wcs2 << '\n';
  
    else if (wcscoll(wcs1, wcs2) > 0)
        wcout << wcs2 << L" precedes " << wcs1 << '\n';
  
    else
        wcout << wcs2 << L" equals " << wcs1 << '\n';
}
  
int main()
{
    // initializing two strings
    wchar_t string[] = L"article";
    wchar_t string_[] = L"everyone";
  
    // setting american locale
    setlocale(LC_ALL, "en_US.utf8");
    wcout << L"In American : ";
  
    // compare two strings with wcs1 and wcs2
    comparetwo(string, string_);
  
    // setting swedish locale
    setlocale(LC_ALL, "sv_SE.utf8");
    wcout << L"In Swedish : ";
    comparetwo(string, string_);
  
    return 0;
}

Output:
In American : article precedes everyone
In Swedish : article precedes everyone

Program 2 :




// C++ program to illustrate
// wcsoll() function
#include <bits/stdc++.h>
using namespace std;
  
// function to compare two strings
void comparetwo(const wchar_t* wcs1, const wchar_t* wcs2)
{
    // pointer wcs1 points string
    // pointer wcs2 points string_
    if (wcscoll(wcs1, wcs2) < 0)
        wcout << wcs1 << L" precedes " << wcs2 << '\n';
    else if (wcscoll(wcs1, wcs2) > 0)
        wcout << wcs2 << L" precedes " << wcs1 << '\n';
    else
        wcout << wcs2 << L" equals " << wcs1 << '\n';
}
  
int main()
{
    // initializing two strings
    wchar_t string[] = L"geekforgeeks";
    wchar_t string_[] = L"gfg";
  
    // setting Czech locale
    setlocale(LC_COLLATE, "cs_CZ.utf8");
    wcout << L"In Czech : ";
  
    // compare two strings with wcs1 and wcs2
    comparetwo(string, string_);
  
    // setting american locale
    setlocale(LC_COLLATE, "en_US.utf8");
    wcout << "In the American locale: ";
    comparetwo(string, string_);
  
    return 0;
}

Output:
In Czech : geekforgeeks precedes gfg
In the American locale: geekforgeeks precedes gfg

Article Tags :
C++