关于字符串的问题,求助

90Runner 2012-12-05 11:47:08
有两个字符串 CString result = "asdf"; CString result1 = "asdfghjkl";
请问要使用什么方法得到这两个字符串中不同的部分啊?就是得到“ghjkl”这部分?
...全文
211 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
雪狼__ 2012-12-05
  • 打赏
  • 举报
回复

int CXXXXX::AnalyseStr(CString alarmHphm,CString Hphm)
{
		try{
			int iLen=alarmHphm.GetLength();
			if(iLen!=Hphm.GetLength()) 
				return 0; //长度不等
			for(int i=0;i<iLen;i++)
			{
				if(alarmHphm.GetAt(i)=='*')
					continue;
				if(alarmHphm.GetAt(i)!=Hphm.GetAt(i))
					return 1;//不匹配
			}
			return 2;  //匹配
	}
	catch(_com_error &e)
	{
		_bstr_t bstrSource(e.Source());
		_bstr_t bstrDescription(e.Description());
	}
}
自己改改 管用
若风09 2012-12-05
  • 打赏
  • 举报
回复
是啊,感觉你没说清楚你具体想怎么实现,如果是字母没有规律,只能一个一个查
zhuyf87 2012-12-05
  • 打赏
  • 举报
回复
CString result = "asdf"; CString result1 = "asdfghjkl"; 两个字符串,肯定是前面字符一样,后面的字符不一样? 这样的话就像1楼这样处理。 如果两个字符串的没有什么规律,比如: CString result = "ace"; CString result1 = "badf"; 这个就要挨个字符检测了。
lgxing 2012-12-05
  • 打赏
  • 举报
回复
CString ss, s; if (result.GetLength() > result1.GetLength()) { ss = result; s = result1; } else { ss = result1; s = result; } ss.Replace(s, _T(""));//ss就是
90Runner 2012-12-05
  • 打赏
  • 举报
回复
引用 1 楼 hfz8867879 的回复:
CString result = _T("asdf"); CString result1 = _T("asdfghjkl"); int a=result.GetLength(); result1.Right(result1.getlength()-a);就是你要的
谢谢你,按照你教的我运行了下,没有输出我想要的那部分,我的两个字符串是取出来的并不是我直接输入的,这样可以吗?
九州剑王 2012-12-05
  • 打赏
  • 举报
回复
CString result = _T("asdf"); CString result1 = _T("asdfghjkl"); int a=result.GetLength(); result1.Right(result1.getlength()-a);就是你要的
LiuYinChina 2012-12-05
  • 打赏
  • 举报
回复
百度,最长公共子串, 一个 L 开头的算法(我忘了),
90Runner 2012-12-05
  • 打赏
  • 举报
回复
不好意思 我举得例子有点问题,我的想法是我得到了两个字符串result与result1,现在我想对这两个字符串做比较(result与result1比较),并取出两个字符串中不同的部分,请问各位大神如何实现啊?
KeepingStudyZXR 2012-12-05
  • 打赏
  • 举报
回复
字符串没有规律分散的话,就只能挨个查了。
jiuzhoulh 2012-12-05
  • 打赏
  • 举报
回复
楼主可以去看看那sscanf()函数,可以找到一个通用的函数来处理
90Runner 2012-12-05
  • 打赏
  • 举报
回复
int j = result.GetLength(); if(result.GetLength() != result1.GetLength()) { for(int i=0;i<j;i++) { if(result.GetAt(i) == result1.GetAt(i)) continue; if(result.GetAt(i) != result1.GetAt(i)) str1=result.GetAt(i); } }
[align=center]
[/align] 我的程序加上这一段代码后,编译不报错,出现MFC界面,但是当我执行按钮功能的时候程序就蹦了,谁知道是什么原因啊?if语句那有什么不对的吗?还是最后的取值不对啊?
90Runner 2012-12-05
  • 打赏
  • 举报
回复
那请问如何检测找出不一样的字符串啊
九州剑王 2012-12-05
  • 打赏
  • 举报
回复
引用 2 楼 Paddy90 的回复:
引用 1 楼 hfz8867879 的回复:CString result = _T("asdf"); CString result1 = _T("asdfghjkl"); int a=result.GetLength(); result1.Right(result1.getlength()-a);就是你要的 谢谢你,按照你教的我运行了下,没有输出我想要的那部分,我的……
不是不成功,肯定能截取,只不过result1没有改变,想改变,前面要赋值result1=result1.Right(result1.getlength()-a);就是你要的
90Runner 2012-12-05
  • 打赏
  • 举报
回复
引用 5 楼 YI_RIVER_LOVE 的回复:
是啊,感觉你没说清楚你具体想怎么实现,如果是字母没有规律,只能一个一个查
不好意思啊,我解释下。我做的是指定目录下的文件遍历,第一次遍历的时候将遍历出的目录存在了字符串result中,再一次遍历的时候将查找到的存在了字符串result1中,我现在想取出这两个字符串中不同的部分(就是我新加入或者删除的文件),这个怎么实现啊?
yyyyy_3 2012-12-05
  • 打赏
  • 举报
回复
Find()找到相同字符串, 然后后移length, 然后Mid()取得结果.

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧