C++代码高手解释下

来源:百度知道 编辑:UC知道 时间:2024/07/06 23:09:49
for (i=0;orgstr[i]!='\0';i++)
{
for (j=0;substr[j]!='\0';j++)
{
if (orgstr[i+j]!=substr[j])
{
break;
}
}
if (substr[j]=='\0')
break;
这一段代码什么意思啊说具体点(orgstr,substr是2个数组.I和J是变量前面申明了)这是1段.告知曾经是否写过某个单词写过就告知匹配的第1个字符所在位置没写过则告知没写.这个代码里的一段特别是if (orgstr[i+j]!=substr[j]) { break } 完全不理解他意思哪为高人指导下本人刚学C++请具体点

整个代码的意思是:判断 orgstr字符串里 有没有 substr子字符串;
但是这个代码可能 崩溃! 需要在 第一个if前面判断下 i+j 对数组orgstr的有效性.

for (i=0;orgstr[i]!='\0';i++) //字符串orgstr从i开始循环计数
{
for (j=0;substr[j]!='\0';j++) //子串substr
{
if (orgstr[i+j]!=substr[j]) //判断从i开始,到substr的长度结束,orgstr的字符是不是 substr全部相等,有一个不相等就进入下个循环
{
break;
}
}
if (substr[j]=='\0') //如果 子串走到了它的最后一个位置,说明orgstr有substr的子串了.
break;

if (orgstr[i+j]!=substr[j]) { break }
指的是以 orgstr[i] 为首字母的字串不是以 substr 为前辍!
可这样做:
if (orgstr[i+j]!=substr[j]) { cout<< (orgstr + i) <<endl;break; }
每 break 一次就打印一次看看,这是用调试来帮助理解代码!