你这里是C++中compare()的使用有问题,a. compare(0,1,b)的意思是从a的第0位字符开始共包含1个字符与b进行比较,也就是拿a与aa比较,所以结果为-1。
int main()
{
string A("ab");
string B("ab");
int rtn = A.compare(0, 1, &B[0]);
cout << rtn << endl;//-1,其实比的是a和ab
rtn = A.compare(0, 1, &B[1]);
cout << rtn << endl;//-1,其实比的是a和b
rtn = A.compare(1, 1, &B[1]);
cout << rtn << endl;//0,其实比的是b和b
rtn = strncmp(A.c_str(), B.c_str(), 1);
cout << rtn << endl;//0,其实比的是a和a
system("pause");
return 0;
}
刚研究了下,str1.compare(int index, int n, string str2)
这个函数第一个参数和第二个参数只对str1起作用,不对str2起作用。
和strncmp不一样。