c++ 标准库中的string,比较字符串函数compare:
- 比较的是2个字符串的码表值(不知道中文是怎么比较的,换一种编码是不是结果就不一样了);
- 比较的是2个字符串中第1个不同字符的码表值,也就是说,只要比较完第1个不同的字符,后面的字符就不再比较了(我以前一直以为是把整个字符串的码表值全部加起来再比较);
例1:
str1 = "ST_FR_10";
str2 = "ST_FR_11";
int nRet = str1.compare(str2); //nRet = -1;
结果:nRet = -1;
原因:2个字符串只有最后1个字符不一样,而0在字符码表中的值比1要小,即str1 < str2,compare返回-1;
例2:
str1 = "ST_FS_10";
str2 = "ST_FR_11";
int nRet = str1.compare(str2); //nRet = 1;
结果:nRet = 1;
原因:比较到第5个字符时,发现不一样,而S在字符码表中的值比R要大,即str1 > str2,compare返回1; |