C++ 存储字符信息的二维整数数组

C++ 存储字符信息的二维整数数组,c++,arrays,string,C++,Arrays,String,有两个字符串,我需要比较它们是否不同,如果它们不同,我需要标记它们的索引。 第一个字符串是:“bundle”,第二个字符串是“double”,所以我需要做(b,d)=索引0(u,o)=1。我得到了一段使用二维整数数组的代码,但是整数数组如何存储这些信息。在代码的后面,有一个从char a到z的循环。那么它们是如何比较的呢 // for (i='a';i<='z';i++) for (j=i+1;j<='z';j++) if (x

有两个字符串,我需要比较它们是否不同,如果它们不同,我需要标记它们的索引。 第一个字符串是:“bundle”,第二个字符串是“double”,所以我需要做(b,d)=索引0(u,o)=1。我得到了一段使用二维整数数组的代码,但是整数数组如何存储这些信息。在代码的后面,有一个从char a到z的循环。那么它们是如何比较的呢

         // for (i='a';i<='z';i++)
          for (j=i+1;j<='z';j++)
         if (x[i][j] && x[j][i])// how x[i][j] is used here with char//
        // main code begins here
        int x[256][256],n,i,j,ans,k;
        string a,b;
        main()
           {
              cin>>n;
              cin>>a>>b;
             for (i=0;i<n;i++)
               {
                  if (a[i] != b[i])
                     {
                      x[a[i]][b[i]]=i+1;// but a[i] and b[j] are characters and x is 2-d int array
                      ans++;
                      }
                }
           for (i='a';i<='z';i++)
           for (j=i+1;j<='z';j++)
            if (x[i][j] && x[j][i])
                {
                 cout<<ans-2<<endl;
                 cout<<x[i][j]<<" "<<x[j][i]<<endl;
                return 0;
                 }
              for (i='a';i<='z';i++)
              for (j='a';j<='z';j++)
              for (k='a';k<='z';k++)
              if (x[i][j] && x[j][k])
                  {
                  cout<<ans-1<<endl;
                  cout<<x[i][j]<<" "<<x[j][k]<<endl;
                  return 0;
                  }
//for(i='a';in;
cin>>a>>b;

对于(i=0;它看起来有很多代码可以处理。即使你不能使用
std::mismatch
本身,它的实现应该让你知道如何实现查找字符串差异的位置更容易。mismatch并不重要,但我们如何在二维数组int中存储a[i]和b[j],而a[i]和b[i]是char@BartvanNieropA
char
只不过是一些一个字节的数据4字节。将
char
分配给
int
只需将
int
的最高有效字节设置为
0x00
,将其最低有效字节设置为
char
具有的任何值。请注意,这稍微简化,因为它没有考虑符号位。数组X将存储X(b,d)或X吗(98100)?@BartvanNierop
'b'==98
'd'==100
。它们在内存中是相同的东西,只是在文本编辑器和输出函数中表示不同。试试它:
printf(“%c%c”,100,'d”);
那么你的问题的答案是它存储了X('b','d')还是X(98,100)是的,它存储了。