c++ - 使用循环的字典字符串比较

标签 c++ string c++11

我想按字典顺序比较两个长度相等且包含拉丁字母的字符串。大写和小写字母被认为是相同的。

这是我的代码:

string in1,in2;
    getline(cin,in1);
    getline(cin,in2);
    int l=in1.length();

    for(int i=0;i<l;++i){
        in1[i]=tolower(in1[i]);
        in2[i]=tolower(in2[i]);
    }

    int sum1=0;
    int sum2=0;
    for(int i=0;i<l;++i){
        sum1=sum1 + int(in1[i]);
        sum2=sum2 + int(in2[i]);
    }
    if(sum1==sum2)
        cout<<"0"<<endl;
    if(sum1<sum2)
        cout<<"-1"<<endl;
    if(sum1>sum2)
        cout<<"1"<<endl;

但是,这会在某些测试条件下产生错误。

这里有什么问题吗?

最佳答案

可以使用比较函数

int x = in1.compare(in2);
if(x == 0)
     cout<<"Both are Equal";
else if (x > 0) 
    cout << in1 << " is greater than "<< in2 << endl; 
else
    cout << in2 << " is greater than "<< in1 << endl; 

关于c++ - 使用循环的字典字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297477/

相关文章:

c++ - 我误解了指针的工作原理吗?

c++ - NULL 指针参数有多昂贵?

LINQ:将多个 int 属性连接成一个字符串

c++ - 指向 char 数组的整数指针

c++ - 不相关类型的动态调度解决方案

c++ - 采用右值参数的函数

c++ - 元组的一个元素可以引用另一个元素吗?

c++ - 理解 c++20 的用户定义字符串文字加法

java - 将带有通配符的 Java 泛型编译为 C++ 模板

c - strncpy的实现