字符串比较操作符
String comparison operators
它们是如何工作的?我很困惑。人们说可以按字典顺序比较字符串,但事实并非如此。运行这个程序,您会发现它只是有时起作用。
有一个帖子在网站上说,如果它是一个字符串字面值,它不会工作,但即使是声明的字符串,像这些在我的程序,它给我错误消息。到底发生了什么事?我是否可以比较字符串与">"<"操作符?
#include <iostream>
#include <string>
using namespace std;
void stringCompare(string c, string d){
if(c < d){
cout << "It's less than!" <<endl;
}
else{
cout << "It's Greater then!" <<endl;
}
}
int main(){
while(true){
string c,d;
cout << "Enter First Number "<< endl;
cin >> c;
cout << "Enter Second Number" <<endl;
cin >> d;
stringCompare(c,d);
}
}
几个值的输入输出:
a, B ->'a'小于
A, b -> 'A'小于
c, D -> 'c'大于
? ?
问题是<
的操作符重载是根据字典区分大小写的比较来工作的。
你没有得到一个随机错误,事实是a
!= A
.
要进行不区分大小写的比较,您应该首先将两个字符串转换为小写,如
string lowercase;
lowercase.resize(text.size());
transform(text.begin(), text.end(), lowercase.begin(), ::tolower);
然后比较它们
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 使用比较操作符将Std::string作为Std::map中的键
- c++中的宏操作符和std::字符串比较
- 重写==操作符用于类比较
- 字符串比较的小于操作符无论在什么情况下都会产生相同的结果
- 如何声明比较操作符(小于)重载的模板特化
- 将比较操作符的重载定义/声明为库中的非成员函数
- 比较测试失败:unorder_map上的[]操作符产生的参数数量错误
- 如何在不重载比较操作符的情况下为std::max专门化自定义类型
- 整数类和分数类的添加和比较数据的操作符重载
- 不能使用操作符重载比较const和非const模板类型
- 操作符重载- c++: next_permutation的比较函数
- 如何重载一组对的比较操作符?
- 使用操作符对字符串进行字典比较
- 映射比较操作符重载
- cpp中操作符重载时值的比较
- 字符串比较操作符