📜  C++中的wcscoll()函数

📅  最后修改于: 2021-05-30 10:23:13             🧑  作者: Mango

C++中的wcscoll()函数比较两个以null终止的字符串。比较基于LC_COLLATE类别定义的当前语言环境。
此函数开始比较每个字符串的第一个字符。在字符不同或直到到达表示字符串结尾的零宽度字符之前,它们被认为是相等的。

句法:

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

参数:该函数接受两个强制性参数,如下所述:

  1. wcs1:它是指向要比较的以null终止的宽字符串的指针。
  2. wcs2:这是指向要比较的以null终止的宽字符串的指针。

返回值:该函数返回以下三个值:

  1. 如果值指示两个字符串相等,则为0。
  2. 正值,如果是在不同WCS1的第一个字符是比WCS2相应字符越大。
  3. 负值,如果这是在不同WCS1的第一个字符是小于在WCS2相应字符。

下面的程序说明了上述函数:
程序1:

// C++ program to illustrate
// wcsoll() function
#include 
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;
}
输出:
In American : article precedes everyone
In Swedish : article precedes everyone

程序2:

// C++ program to illustrate
// wcsoll() function
#include 
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;
}
输出:
In Czech : geekforgeeks precedes gfg
In the American locale: geekforgeeks precedes gfg
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”