【发布时间】:2019-12-25 03:14:34
【问题描述】:
我想要比较后的结果是1,因为两个字符串完全一样,不明白为什么是0,怎么处理?
string s1="\"Kilómetro 0,72\"";
s1=s1.substr(1,s1.length()-2);
cout<<s1<<endl;
string s2="Kilómetro 0,72";
cout<<s2<<endl;
if(s1==s2) cout<<1;
else cout<<0;
【问题讨论】:
我想要比较后的结果是1,因为两个字符串完全一样,不明白为什么是0,怎么处理?
string s1="\"Kilómetro 0,72\"";
s1=s1.substr(1,s1.length()-2);
cout<<s1<<endl;
string s2="Kilómetro 0,72";
cout<<s2<<endl;
if(s1==s2) cout<<1;
else cout<<0;
【问题讨论】:
因为你的两个字符串不一样。 (注意s2 中o 上的重音偏移。)这个有效:
#include <string>
#include <iostream>
int main()
{
using namespace std;
string s1="\"Kilómetro 0,72\"";
s1=s1.substr(1,s1.length()-2);
cout<<s1<<endl;
string s2="Kilómetro 0,72";
cout<<s2<<endl;
if(s1==s2) cout<<1;
else cout<<0;
return 0;
}
【讨论】:
s2中有一个复合字符(拉丁小写字母o + 组合重音),上面的版本是简单的带有锐音的拉丁小写字母o。可能回答者应该解释这一点,而不是仅仅发布神秘的工作代码!
在最后加上这段代码:
for(int i = 0; i < s1.length(); i++) {
cout << (int)(unsigned char)s1[i] << " " << (int)(unsigned char)s2[i] << endl;
}
它会帮助你。
【讨论】: