我想实现一个函数,将一个字符串转化为一个整形数。
如 int a = f("adaaaaf");
   int b = f("dfafdffffff");
  我可以通过比较a和b的值,确定以上两个字符串是不相同的。

解决方案 »

  1.   

    这个是一个编码的问题
    简单的话,如果都是小写字母
    对于第i个字符用i*26,然后相加不过如果字符串太长的话可能导致int溢出
      

  2.   

    你可以使用这个类:
    CString a , b ;
    if ( a == b )
    {
     //then a = b
    }函数有atoi( string ) ;
    但没试过可不可以。
      

  3.   

    char *s1,*s2;
    if(strcmp(s1, s2) == 0)
    {
    相同
    }
    else
    {
    不同
    }
      

  4.   

    如果你中想比较相不相同,字符串比较函数就可以了.
    如果你想把字符串与整数相对应,那是不可能的,你想了int有多少个,字符串可是无限多.
      

  5.   

    如果仅仅用int.理论上没有算法可以做到. 为什么不用strcmp()呢?
      

  6.   

    应该可以实现,不过要有点变通。得到字符窜的ASCII码按照对应位置组合
    如aaaa;->96969696
    aaab->96969697,如果字符窜长度大于一个固定值
    先比较固定值之前的数是否相同,相同将比较过的窜去掉,在处理后边的窜。
    不过这么做好像没有必要
      

  7.   

    字符串比较要用strcmp函数,
    CString a , b ;
    if ( a == b )
    {
     //then a = b
    }
    比较的是地址,所以永远也无法成立。
      

  8.   

    如果是比较两个字符串的话直接使用系统函数strcmp即可,没有必要将它转化为一个整数,且从算法上讲不能或很难实现,如果非要向整数靠拢,可以考虑字符的ASCII值(其实二者差不多,玩玩小把戏而已)。
      

  9.   

    可以通过一个和校验,一个CRC校验,首先对字符串进行和校验,把得到的和值方进一个数中,然后通过CRC校验校验出一个值放在另外一个数中,比如都是INT型,把一个DWORD型的高2个字节放一个值,低两个字节放一个值,这样就变成了一个值,通过两个函数的返回值比较,不过返回的是DWORD型,而且字符串大小有限制的,否则会产生越界