Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 比较c+中不相等数组或字符串的方法+;_C++_Arrays_C++11_C++14_C Strings - Fatal编程技术网

C++ 比较c+中不相等数组或字符串的方法+;

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的对象,

我正在处理一个问题,其中两个字符串作为输入,我们必须查看第一个字符是否与另一个字符串的第一个字符相同,并触发一个case! 所以,当我使用for或while循环比较它们时,两个循环中的一个超出了限制,返回了错误的结果


我尝试了很多方法来解决这个问题,但是没有找到一个好的方法

如果您指的是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;

如果两个字符串的长度不同,会发生什么情况?发布您当前使用的代码,以便我们了解您想要完成什么以及如何修复它。