字符串比较操作符

String comparison operators

本文关键字:操作符 比较 字符串      更新时间:2023-10-16

它们是如何工作的?我很困惑。人们说可以按字典顺序比较字符串,但事实并非如此。运行这个程序,您会发现它只是有时起作用。

有一个帖子在网站上说,如果它是一个字符串字面值,它不会工作,但即使是声明的字符串,像这些在我的程序,它给我错误消息。到底发生了什么事?我是否可以比较字符串与">"<"操作符?

#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);

然后比较它们