
在编程中,我们有时会遇到CompareNoCase和Compare这两种字符串比较方法。主要的区别在于它们对待大小写的敏感程度。CompareNoCase,顾名思义,是不区分大小写的比较。在ATL(Active Template Library)库的CString类中,如果使用CompareNoCase函数,比如比较两个字符串s1和s2,即使它们的大小写不同,如s1为"12",s2为"28",函数的结果将不是1或-1,而是返回两者在第一个字符差异处的ASCII码之差,如上述例子中的-1。这是因为在Unicode环境下,这种差异性的衡量方式更为恰当。相比之下,Compare方法则是区分大小写的,如果两个字符串在大小写上有差异,其结果会直接返回1或-1,如s1.Compare(s2)会返回1,因为"1"与"2"在ASCII码上不同。在使用ATL的CString时,如果你在Unicode环境中进行字符串比较,强烈建议使用CompareNoCase,因为它的返回结果更符合我们通常的大小写无关的比较习惯。在判断字符串大小时,应使用其返回值是否小于或等于0,而不是直接与1或-1进行比较。
