c++ - 为什么 .compare 返回 1?
问题描述
我知道对于字符串y
和x
, 和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;
}
解决方案
int string::compare (const string& str) const 返回:
- 0:如果两个字符串相等。
- 值 < 0 :如果 *this 比 str 短,或者,不匹配的第一个字符小于 str。
- 值 > 0 :如果 *this 比 str 长,或者,不匹配的第一个字符更大
推荐阅读
- java - java eclipse坏了怎么解决?
- python - RuntimeError: populate() 不是可重入的导入循环
- javascript - 阻止对象共享值
- ssrs-2012 - SSRS:报告存在但在页面上不可见
- javascript - 表示返回空参数的嵌套路由
- javascript - FlatList/ScrollView 不在 Touchables 之间滚动
- laravel - 使用 hasMany (第一行)加入,然后是 hasOne
- github - GitHub Pages 图片未显示(区分大小写和路径)
- vb.net - 如何从 PowerShell 脚本(PSObjects?)实时输出到 WinForms 文本框?
- php - 所有自定义请求的常见验证错误 ibn laravel