Expression:_CrtIsValid HeapPointer(pUserData) 内存调用上的错误,可我不会改,55555,请高手看一眼
素才 2008-07-10 07:50:22 编译没问题,运行时Expression:_CrtIsValid HeapPointer(pUserData) 内存调用上的错误,可我不会改,55555,请高手看一眼
class CPreProcess
{
private:
CString STitle,SKeyword;
CStdioFile CleanTxt;
public:
CPreProcess();
void GetCleanTxt(CString sFileName);
CString GetStrBetween(CString sFileName,CString stra,CString strb);
virtual ~CPreProcess();
};
CString CPreProcess::GetStrBetween(CString sFileName,CString stra,CString strb)
{
if(sFileName!="")
{
CFile file(sFileName,CFile::modeRead);
int nFileLength=file.GetLength();
char *txtbuffer;
HGLOBAL hgl=::LocalAlloc(GMEM_MOVEABLE,nFileLength+1);
txtbuffer=(char *)::LocalLock(hgl);
file.Read(txtbuffer,nFileLength);
CString S=txtbuffer;
free(txtbuffer);
LocalFree(hgl);
GlobalFree(hgl);
int pos1=S.Find(stra,0);//删除从stra到strb之间的内容
int pos2=S.Find(strb,0);
S.Delete(pos1,pos2-pos1);
if(S.Replace(stra+":","")==0)S.Replace(strb+":","");
S.TrimLeft();//去掉最前最后无意义的空格等符号
S.TrimRight();
file.Close();
return S;};
}
void CPreProcess::GetCleanTxt(CString sFileName)
{
CString S=GetStrBetween(sFileName,"编号","题目");CleanTxt.Open("cleantxt.txt",CFile::modeCreate|CFile::modeWrite);
CleanTxt.WriteString(S);
CleanTxt.Close();}
主程序里只涉及到了这两句话,应该没有错
CPreProcess PreProcess;
PreProcess.GetCleanTxt(sFileName);