首页 > 解决方案 > 为什么 .compare 返回 1?

问题描述

我知道对于字符串yx, 和x.compare(y)等于 0,那么两个字符串都相等。x当我为using输入一个相等的字符串时getline(cin,x),我得到 1 而不是 0 返回。为什么会这样?我应该只解释x.compare(y) == 1它们平等的含义吗?

我已经尝试k==0在我的 if 语句中进行制作,但它没有返回 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;
}

标签: c++

解决方案


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

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

推荐阅读