关于字符串的处理有关问题,这是查找cpp文件中正文中含有中文的函数,排除注释中出现的中文,ListShow(strLine,i)是显示这一行行数和这一行的内容
关于字符串的处理问题,这是查找cpp文件中正文中含有中文的函数,排除注释中出现的中文,ListShow(strLine,i)是显示这一行行数和这一行的内容
[code=C/C++][/code]
CString strChMark="//";
CString strMark1="/*";
CString strMark2="*/";
int i=1;
while (file.ReadString(strLine))
{
indexCh=0;
indexChMark=0;
indexChMark=strLine.Find(strChMark);
if ((indexChMark==-1)&&(strLine.Find(strMark1)==-1)&&(strLine.Find(strMark2)==-1))
{
Flag=FALSE;
continue;
}
if ((strLine.Find(strMark1)>=0)||(indexChMark>=0))
{
Flag=FALSE;
continue;
}
if ((strLine.Find(strMark1)<0)&&(strLine.Find(strMark2)>=0))
{ //不包含一行内存在*/的情况 且前面有汉字
Flag=TRUE;
continue;
}
if (!Flag)
{
strcpy((char *)BufferLine,(LPCSTR)strLine);
while ((BufferLine[indexCh]!='\r')&&(BufferLine[indexCh+1]!='\n')
&&(BufferLine[indexCh]!='\0'))
{
if (BufferLine[indexCh]>=128)
{
if (indexChMark>0||strLine.Find(strMark1))
{
if (indexCh<indexChMark||indexCh<strLine.Find(strMark1))
{
ListShow(strLine,i);
break;
}
else
{
break;
}
}
else
{
ListShow(strLine,i);
break;
}
}
else
{
indexCh++;
}
}
}
i++;
}
[code=C/C++][/code]
CString strChMark="//";
CString strMark1="/*";
CString strMark2="*/";
int i=1;
while (file.ReadString(strLine))
{
indexCh=0;
indexChMark=0;
indexChMark=strLine.Find(strChMark);
if ((indexChMark==-1)&&(strLine.Find(strMark1)==-1)&&(strLine.Find(strMark2)==-1))
{
Flag=FALSE;
continue;
}
if ((strLine.Find(strMark1)>=0)||(indexChMark>=0))
{
Flag=FALSE;
continue;
}
if ((strLine.Find(strMark1)<0)&&(strLine.Find(strMark2)>=0))
{ //不包含一行内存在*/的情况 且前面有汉字
Flag=TRUE;
continue;
}
if (!Flag)
{
strcpy((char *)BufferLine,(LPCSTR)strLine);
while ((BufferLine[indexCh]!='\r')&&(BufferLine[indexCh+1]!='\n')
&&(BufferLine[indexCh]!='\0'))
{
if (BufferLine[indexCh]>=128)
{
if (indexChMark>0||strLine.Find(strMark1))
{
if (indexCh<indexChMark||indexCh<strLine.Find(strMark1))
{
ListShow(strLine,i);
break;
}
else
{
break;
}
}
else
{
ListShow(strLine,i);
break;
}
}
else
{
indexCh++;
}
}
}
i++;
}