如何比较C++中的单字符串字符?

如何比较C++中的单字符串字符?,c++,C++,我想比较我的SC中的两个单字符串变量,如果它们不同,我想在我的int数据战斗中添加+1,比如X[1]=A,Y[1]=B,在战斗中添加+1 但是,当我输入不同的字母时,程序似乎没有检测到任何差异,也没有向战斗中添加+1。将X,Y更改为数组 工作代码: int N; char X[100001]; char Y[100001]; int fights = 0; 1 <= N <= 100000; for (int i = 0; i < N; i++){ cin

我想比较我的SC中的两个单字符串变量,如果它们不同,我想在我的int数据战斗中添加+1,比如X[1]=A,Y[1]=B,在战斗中添加+1


但是,当我输入不同的字母时,程序似乎没有检测到任何差异,也没有向战斗中添加+1。

将X,Y更改为数组

工作代码:

int N;
char X[100001];   
char Y[100001];

int fights = 0;

1 <= N <= 100000;

for (int i = 0; i < N; i++){
    cin >> X[i];
    cin >> Y[i];

    if (Y[i] != X[i]){
       fights += 1;
    }     
}
cout << fights;

return 0;

}

您并没有将变量X和Y声明为数组,而是像使用会产生错误的变量一样使用它!您必须首先指定它,然后才能使用它

  #include<iostream>
#include<cstring>
using namespace std;
 int main(){

int N;
    char X[10]; //specify any size according to ur need 
    char Y[10]; // but size specification of array is compulsary

    int fights = 0;

    // 1 <= N <= 100000;         <-- i dont think this is required
    // just use a no. for conditional expression in for 
    // here there is no need for comparing it with other variable
    for (int i = 0; i < 10; i++){
        cin >> X; 
        cin >> Y;


        if (strcmp(X,Y)==0){
           fights += 1;
        }     
    }
    cout << fights;

    return 0;
}
在这里,你可以在两个变量中输入10个字符。你可以根据需要更改它。如果两个变量的字符完全相同,则不会添加任何内容,否则将添加1

#include<iostream>
#include<string.h>
using namespace std;

 int main(){


    char X[10]; 
    char Y[10]; 
    int n;
    int fights = 0;
    cin >> X; 
    cin >> Y;
    if(strlen(X) > strlen(Y))
         n = strlen(X);
    else
       n = strlen(Y);
    for (int i = 0; i < n; i++){
        if(X[i]!=Y[i]) {
            fights +=1;
        }
      else 
        ;     
     }
    cout << fights;

    return 0;
}

这将正确地进行比较

X&Y不是数组,并且您没有检查输入是否成功。也许您想提供一个编译的示例?我可能无法通过包含cin>>N来定义N的确切数目;到我的SC。可能是它没有将+1添加到我的int战斗中的原因。当您尝试使用下标运算符访问指针或数组之类的字符时会发生什么情况?是否说出第一个元素[0]?它只是一个简单的解引用吗?N还没有初始化,所以您对它所做的任何操作都会产生未定义的行为。特别是,1它确实在某种程度上帮助了我,但当我处理较长的字符输入时,比如ABCD代表X[I]和ACBE代表Y[I],它在战斗中增加了两倍,而不是在每个不同的字母中只增加+1,比如X[2]!=Y[2],+1战斗等等。我还遗漏了什么吗?等等,我会根据你的要求编辑我的答案!这应该能解决你的问题!感谢您的帮助,尽管我实际上更关心的是用户输入的字符的差异数量,假设它们的长度相等。假设我为X输入ABC,为Y输入CBA,因为X[1]=A;Y[1]=C;X[3]=C;Y[3]=A,这是不同的,int-fights应该返回一个值2。好的,我正在处理它!对我来说有道理。否决票的原因是什么?我不知道否决票的原因是什么。不是问你。我在问潜在的选民。我也想知道同样的事情。-1:N还没有初始化1
#include<iostream>
#include<string.h>
using namespace std;

 int main(){


    char X[10]; 
    char Y[10]; 
    int n;
    int fights = 0;
    cin >> X; 
    cin >> Y;
    if(strlen(X) > strlen(Y))
         n = strlen(X);
    else
       n = strlen(Y);
    for (int i = 0; i < n; i++){
        if(X[i]!=Y[i]) {
            fights +=1;
        }
      else 
        ;     
     }
    cout << fights;

    return 0;
}