下面有段程序,能不能深入的给解释下,最好有实例讲解。
LPCTSTR FindOneOf(LPCTSTR p1, LPCTSTR p2)
{
while (p1 != NULL && *p1 != NULL)
{
LPCTSTR p = p2;
while (p != NULL && *p != NULL)
{
if (*p1 == *p)
return CharNext(p1);
p = CharNext(p);
}
p1 = CharNext(p1);
}
return NULL;
}
LPCTSTR FindOneOf(LPCTSTR p1, LPCTSTR p2)
{
while (p1 != NULL && *p1 != NULL)
{
LPCTSTR p = p2;
while (p != NULL && *p != NULL)
{
if (*p1 == *p)
return CharNext(p1);
p = CharNext(p);
}
p1 = CharNext(p1);
}
return NULL;
}
比如调用FindOneOf("a","dcake"),得到的结果是"ke";
如果找不到,返回NULL!
FindOneOf("abcdef","gd")
返回值为"ef"具体流程可以在FindOneOf处设置断点,F10进行跟踪。
1)FindOneOf(_T("A.exe -Test"),_T("-/"));
返回值为"Test";
2)FindOneOf(_T("A.exe /Test"),_T("-/"));
返回值为"Test";
这段代码的目的确切的说,是从p1中找出第一个在p2中所含有的字符!如果有(能找到),就返回p1中该字符的下一个字符;如果没有,返回NULL;
比如FindOneOf("abcdef","gd") ,返回为"ef";
FindOneOf("abcdef","gg") ,返回为NULL
FindOneOf("abcdef","ab"), 返回为"bcdef";
1. FindOneOf("abcdef", "bf"); // 返回"cdef"2. FindOneOf("abcdef", "fb"); // 返回"cdef"