comparenocase_CompareNoCase -CString::CompareNoCase()
函数原型int CompareNoCase( LPCTSTR lpsz ) const; 这个函数使用lstrcmpi函数对一个CString和另一个CString进行比较。由参数lpsz指定这个用于比较的string。如果两个对象完全一致则返回0,如果小于lpsz,则返回-1,否则返回1.比如,利用CompareNoCase比较str与lpsz,等同于区分大小写比较str与lpsz的第一个相异字符,如果str该处的字符比lpsz大,则字符串str大于lpsz,返回1;如果str该处的字符比lpsz小,则字符串str小于lpsz,返回-1;str与lpsz内容完全一致则返回0。
例子下面是MSDN上的一个例子
// example for CString::CompareNoCase
CString s1( "abc" );
CString s2( "ABD" );
ASSERT(s1.CompareNoCase( s2 ) == -1 ); // Compare with a CString.
ASSERT( s1.Compare( _T("ABE" ) ) == -1 ); // Compare with LPTSTR string.
CompareNoCase为不区分大小写比较,而Compare为区分大小写比较
ATL中CString::CompareNoCase的不同在Unicode环境下,ATL中的CString(包含头文件atlstr.h时)比较结果当双方不等于时将不再返回1或-1,而是返回两者第一处不同点的差值。如:
CString s1("12");
CString s2("28");
则此时s1.CompareNoCase(s2);的值为-1.因此,使用Unicode环境下的ATL::CString比较字符串一定要使用<=0和>=0的方式来判断大小,不能通过与1或-1的相等性来判断。