寻找代码中有效的文字符串

 

//找到第一个中文字符串字符的位置

int FindDBCS(CString strSrc)

{

int iPos = -1;

for(int i = 0 ; i < strSrc.GetLength(); i++)

{

if (IsDBCSLeadByte(strSrc.GetAt(i)))

{

iPos = i;

break;

}

}

return iPos;

}

 

//找出.cpp文件中非注释的中文字符串

void CDealFileDlg::OnBUTTONDeal()

{

BOOL bDoubleSlash = FALSE;//双斜杠"//"

BOOL bSlashAsterisk = FALSE;//斜杠+星号"/*"

 

// TODO: Add your control notification handler code here

//将文件file1中的对话框控顺序输出

CString csFilePathIn; //= _T("D://1.bin");

CString csFilePathOut; //= _T("D://2.bin");

 

GetDlgItem(IDC_EDIT_File_in)->GetWindowText(csFilePathIn);

GetDlgItem(IDC_EDIT_File_out)->GetWindowText(csFilePathOut);

 

CStdioFile fileIn;

CStdioFile fileOut;

 

if(!fileIn.Open(csFilePathIn,CFile::modeRead))

{

AfxMessageBox(csFilePathIn + _T("open error"));

return;

}

if(!fileOut.Open(csFilePathOut,CFile::modeWrite|CFile::modeCreate))

{

AfxMessageBox(csFilePathOut + _T("open error"));

return;

}

 

//

CString csLineSrc;

BOOL bBeginEnd = FALSE;//查找--开始

  //找到--结束

CString csBegin;

//CString csEnd;

//int nCount = 0;

BOOL bOutExsit = FALSE;//

int nLineCount = 0;

CString csLineOut;//保存原始行

while(fileIn.ReadString(csLineSrc))

{

nLineCount++;

csLineOut = csLineSrc;

if (bSlashAsterisk)

{ //之前有"/*"

//寻找"*/"

int pos = csLineSrc.Find(_T("*/"));

if (pos >= 0 )

{

//找到"*/"

bSlashAsterisk = FALSE;

csLineSrc = csLineSrc.Mid(pos + 2);//获取非/*注释代码后,走后面的流程

//继续走后面的

}

else

{

//这一行是注释行

continue;

}

}

//else

{//之前没有"/*"

//寻找"//"

int pos = csLineSrc.Find(_T("//"));

if (pos >= 0 )

{

//找到"//"

csLineSrc = csLineSrc.Left(pos);

//寻找前面是否存在"/*"

int pos2 = csLineSrc.Find(_T("/*"));

if (pos2 >= 0 )

{

}

else

{

 

}

}

else

{

//干净代码

}

}

 

if(csLineSrc.Left(4) == _T("查找"))

{

bBeginEnd = TRUE;

csBegin = csLineSrc;

//nCount = 0;

bOutExsit = FALSE;

continue;

}

if(csLineSrc.Left(4) == _T("找到"))

{

bBeginEnd = FALSE;

//if(nCount > 0)

if(bOutExsit)

{

fileOut.WriteString(csLineSrc + "/n");

}

continue;

}

if(bBeginEnd)

{

if(csLineSrc.GetLength() > 3)

{

//第2个字符时":",第3个字符时"/"

if(csLineSrc.Left(3).Right(2) == _T("://"))

{

//bBeginEnd = FALSE;

//fileOut.WriteString(csLineSrc + "/n");

//continue;

//找到第一个中文字符位置

int iPos = -1;

for(int i = 0 ; i < csLineSrc.GetLength(); i++)

{

//if((BYTE)csLineSrc.GetAt(i) > 0x80)

if (IsDBCSLeadByte(csLineSrc.GetAt(i)))

{

iPos = i;

break;

}

}

//int iPos2 = -1;

/*

if(iPos >= 0)

{

//寻找该中文字符前面的引号"

while(iPos >= 0)

{

if(csLineSrc.GetAt(i) = '/"')

{

iPos2 = iPos;

break;

}

iPos--;

}

}

*/

//iPos2 = iPos;

if(iPos >= 0)

{

//寻找前面是否存在/* 和 //

if(csLineSrc.Left(iPos + 1).Find("//") >= 0)

{

continue;

}

if(csLineSrc.Left(iPos + 1).Find("/*") >= 0)

{

continue;

}

}

 

if(!bOutExsit)

{

fileOut.WriteString(csBegin + "/n");

bOutExsit = TRUE;

}

fileOut.WriteString(csLineSrc + "/n");

//nCount++;

}

else

{

if(!bOutExsit)

{

fileOut.WriteString(csBegin + "/n");

bOutExsit = TRUE;

}

fileOut.WriteString(csLineSrc + "/n");

}

}

else

{

if(!bOutExsit)

{

fileOut.WriteString(csBegin + "/n");

bOutExsit = TRUE;

}

fileOut.WriteString(csLineSrc + "/n");

}

}

else

{

fileOut.WriteString(csLineSrc + "/n");

}

 

/*

if(csLineSrc == _T("END"))

{

bBeginEnd = FALSE;

fileOut.WriteString(csLineSrc + "/n");

continue;

}

if(bBeginEnd)

{

//前4个空格"    "第5个是字符 --- 表示是1个控件名

CString csTemp = csLineSrc.Left(5);

csTemp.TrimLeft();

csTemp.TrimRight();

if(!csTemp.IsEmpty())

{

csTemp = csLineSrc.Mid(5);

//找到一个空格

int find = csTemp.Find(" ");

if(find < 0)

{

find = csTemp.Find(" ");

}

//

if(find < 0)

{

fileOut.WriteString(csLineSrc + "/n");

}

else

{

fileOut.WriteString(csLineSrc.Left(5) + csTemp.Left(find+1) + "/n");

}

}

}

else

{

fileOut.WriteString(csLineSrc + "/n");

}*/

 

}

 

 

 

 

fileIn.Close();

fileOut.Close();

 

AfxMessageBox("OK");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值