为什么 .compare 返回 1?

Why is .compare returning 1?

本文关键字:返回 compare 为什么      更新时间:2023-10-16

我知道对于字符串yx,并且x.compare(y)等于0,那么两个字符串都是相等的。当我使用getline(cin,x)输入一个相等的字符串进行x时,我得到的是 1 而不是 0。为什么会这样?我应该只考虑x.compare(y) == 1意味着它们是平等的吗?

我尝试在我的 if 语句中k==0,但它没有返回 0。我觉得getline()正在向字符串添加其他数据,导致compare()返回1而不是0

这是我的代码:

int main(void) {
string x;
string y = "Hello World";
getline(cin,x);
int k = x.compare(y);
cout << k;
if (k==0) {
cout << "Hi";
}
return 0;
}

int string::compare (const string& str( const 返回:

  • 0 :如果两个字符串相等。
  • 值<0 :如果 *这比 str 短,或者,第一个字符 不匹配小于 str。
  • 值> 0 :如果 *这比 str 长,或者,第一个字符 不匹配越大