C++ 比较c+中不相等数组或字符串的方法+;
我正在处理一个问题,其中两个字符串作为输入,我们必须查看第一个字符是否与另一个字符串的第一个字符相同,并触发一个case! 所以,当我使用for或while循环比较它们时,两个循环中的一个超出了限制,返回了错误的结果C++ 比较c+中不相等数组或字符串的方法+;,c++,arrays,c++11,c++14,c-strings,C++,Arrays,C++11,C++14,C Strings,我正在处理一个问题,其中两个字符串作为输入,我们必须查看第一个字符是否与另一个字符串的第一个字符相同,并触发一个case! 所以,当我使用for或while循环比较它们时,两个循环中的一个超出了限制,返回了错误的结果 我尝试了很多方法来解决这个问题,但是没有找到一个好的方法 如果您指的是c字符串,则使用标准c函数strcmp 否则,如果字符数组不包含字符串,但实际数据的长度已知,则首先可以比较长度,如果长度相等,则可以使用标准C函数memcmp 如果您正在使用类型为std::string的对象,
我尝试了很多方法来解决这个问题,但是没有找到一个好的方法 如果您指的是c字符串,则使用标准c函数
strcmp
否则,如果字符数组不包含字符串,但实际数据的长度已知,则首先可以比较长度,如果长度相等,则可以使用标准C函数memcmp
如果您正在使用类型为std::string
的对象,则为该类型定义了比较运算符
对于其他容器和数组,您可以使用标准算法
std::lexicographical\u compare
我已经编写了一个代码,如果第一个字符串在字典上小于第二个字符串,或者与第二个字符串相比大小较小,则会打印-1。如果第一个字符串在词典上大于第二个字符串,或者与第二个字符串相比大小更大,它将打印1。如果两者相同,则打印0
注意:请完全测试代码。没有像我希望的那样测试它强>
代码位于以下URL:
int main(){
string first = "adsc", second = "abc";
int i = 0, ans = 0;
while(true){
if(i == first.size() or i == second.size() or ans != 0)
break;
if(first[i] < second[i])
ans = -1;
else if(first[i] > second[i])
ans = 1;
i++;
}
if(ans == 0 and first.size() < second.size())
ans = -1;
else if(ans == 0 and first.size() > second.size())
ans = 1;
cout<<ans;
}
intmain(){
字符串first=“adsc”,second=“abc”;
int i=0,ans=0;
while(true){
如果(i==first.size()或i==second.size()或ans!=0)
打破
if(第一[i]<第二[i])
ans=-1;
else if(第一个[i]>第二个[i])
ans=1;
i++;
}
如果(ans==0且first.size()second.size())
ans=1;
如果两个字符串的长度不同,会发生什么情况?发布您当前使用的代码,以便我们了解您想要完成什么以及如何修复它。