C++中的wcscoll()函数比较两个以null终止的字符串。比较基于LC_COLLATE类别定义的当前语言环境。
此函数开始比较每个字符串的第一个字符。在字符不同或直到到达表示字符串结尾的零宽度字符之前,它们被认为是相等的。
句法:
int wcscoll( const wchar_t* wcs1, const wchar_t* wcs2 )
参数:该函数接受两个强制性参数,如下所述:
- wcs1:它是指向要比较的以null终止的宽字符串的指针。
- wcs2:这是指向要比较的以null终止的宽字符串的指针。
返回值:该函数返回以下三个值:
- 如果值指示两个字符串相等,则为0。
- 正值,如果是在不同WCS1的第一个字符是比WCS2相应字符越大。
- 负值,如果这是在不同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等的更多准备工作,请参阅“完整面试准备课程” 。