c++,求问大佬为什么A.compare(0,1,B)有问题?

2025-05-20 05:46:57
推荐回答(2个)
回答1:

你这里是C++中compare()的使用有问题,a. compare(0,1,b)的意思是从a的第0位字符开始共包含1个字符与b进行比较,也就是拿a与aa比较,所以结果为-1。

回答2:

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不一样。