Sta*_*tan 28
如果您不介意与Microsoft实现绑定,可以使用此中定义的此函数 <string.h>
int _wcsnicmp(
const wchar_t *string1,
const wchar_t *string2,
size_t count
);
Run Code Online (Sandbox Code Playgroud)
但是如果你想要最佳性能/兼容性/功能比,你可能不得不看一下boost库(其中一部分是stl).简单的例子(取自不同问题的不同答案):
#include <boost/algorithm/string.hpp>
std::wstring wstr1 = L"hello, world!";
std::wstring wstr2 = L"HELLO, WORLD!";
if (boost::iequals(wstr1, wstr2))
{
// Strings are identical
}
Run Code Online (Sandbox Code Playgroud)
使用标准库:
bool comparei(wstring stringA , wstring stringB)
{
transform(stringA.begin(), stringA.end(), stringA.begin(), toupper);
transform(stringB.begin(), stringB.end(), stringB.begin(), toupper);
return (stringA == stringB);
}
wstring stringA = "foo";
wstring stringB = "FOO";
if(comparei(stringA , stringB))
{
// strings match
}
Run Code Online (Sandbox Code Playgroud)
您可以使用std::tolower()将字符串转换为小写或使用该函数wcscasecmp对 进行不区分大小写的比较c_str()。
这是一个您也可以直接使用的比较函子:
struct ci_less_w
{
bool operator() (const std::wstring & s1, const std::wstring & s2) const
{
#ifndef _WIN32
return wcscasecmp(s1.c_str(), s2.c_str()) < 0;
#else
return _wcsicmp(s1.c_str(), s2.c_str()) < 0;
#endif
}
};
Run Code Online (Sandbox Code Playgroud)