我想按字典顺序比较两个长度相等且包含拉丁字母的字符串。大写和小写字母被认为是相同的。
这是我的代码:
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/