这个算法怎么实现? 我想实现一个函数,将一个字符串转化为一个整形数。如 int a = f("adaaaaf"); int b = f("dfafdffffff"); 我可以通过比较a和b的值,确定以上两个字符串是不相同的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个是一个编码的问题简单的话,如果都是小写字母对于第i个字符用i*26,然后相加不过如果字符串太长的话可能导致int溢出 你可以使用这个类:CString a , b ;if ( a == b ){ //then a = b}函数有atoi( string ) ;但没试过可不可以。 char *s1,*s2;if(strcmp(s1, s2) == 0){相同}else{不同} 如果你中想比较相不相同,字符串比较函数就可以了.如果你想把字符串与整数相对应,那是不可能的,你想了int有多少个,字符串可是无限多. 如果仅仅用int.理论上没有算法可以做到. 为什么不用strcmp()呢? 应该可以实现,不过要有点变通。得到字符窜的ASCII码按照对应位置组合如aaaa;->96969696aaab->96969697,如果字符窜长度大于一个固定值先比较固定值之前的数是否相同,相同将比较过的窜去掉,在处理后边的窜。不过这么做好像没有必要 字符串比较要用strcmp函数,CString a , b ;if ( a == b ){ //then a = b}比较的是地址,所以永远也无法成立。 如果是比较两个字符串的话直接使用系统函数strcmp即可,没有必要将它转化为一个整数,且从算法上讲不能或很难实现,如果非要向整数靠拢,可以考虑字符的ASCII值(其实二者差不多,玩玩小把戏而已)。 可以通过一个和校验,一个CRC校验,首先对字符串进行和校验,把得到的和值方进一个数中,然后通过CRC校验校验出一个值放在另外一个数中,比如都是INT型,把一个DWORD型的高2个字节放一个值,低两个字节放一个值,这样就变成了一个值,通过两个函数的返回值比较,不过返回的是DWORD型,而且字符串大小有限制的,否则会产生越界 和ShellExecute功能相反的功能是哪个函数呢? 初学者的盲目 单文档程序如何获得dialogbar的大小 CRichEditCtrl问题,请教高手 改变Edit的背景色的问题!!! 如何改变工具条按钮的行为? 创建一CRichEditCtrl类,不能显示中文 Unicode编码(高分) 123 怎样得到一个目录下所有的目录名和文件名(不包括子目录下)? 麻烦给介绍几本用vc进行网络编程的书. 如何给CTime类负值
简单的话,如果都是小写字母
对于第i个字符用i*26,然后相加不过如果字符串太长的话可能导致int溢出
CString a , b ;
if ( a == b )
{
//then a = b
}函数有atoi( string ) ;
但没试过可不可以。
if(strcmp(s1, s2) == 0)
{
相同
}
else
{
不同
}
如果你想把字符串与整数相对应,那是不可能的,你想了int有多少个,字符串可是无限多.
如aaaa;->96969696
aaab->96969697,如果字符窜长度大于一个固定值
先比较固定值之前的数是否相同,相同将比较过的窜去掉,在处理后边的窜。
不过这么做好像没有必要
CString a , b ;
if ( a == b )
{
//then a = b
}
比较的是地址,所以永远也无法成立。