zoukankan      html  css  js  c++  java
  • [转]在文件中查找字符串——一个可重用代码段

    因为做“给予电子邮箱的网络硬盘”要用到这么个东西,所以自己写了一个,也许算法不是很好,效率不是很高,但用于做那个网络硬盘的软件是足够了。

    我一共写了两个这样功能的函数,一个是静态成员函数,另一个是非静态成员函数,他们都是类CEMailFile类的成员,这个类是用于分析下载到本地的电子邮件并可以将编过码附件提取出来。

    以下是类的静态成员函数:

    int CEMailFile::FindInFile(LPCTSTR sFilePath, LPCTSTR sString)

    {

     CFile file;

     if(!file.Open(sFilePath,CFile::modeRead)) return -1;

     UINT nStrLen=strlen(sString);

     CFileStatus FileStatus;

     if(!file.GetStatus(FileStatus)) return -1;

     file.SeekToBegin();

     CString strBuff;

     int nRes=-1;

     strBuff.GetBufferSetLength(1024);

     for(long i=0;i<FileStatus.m_size;)

     {

      memset(strBuff.GetBuffer(0),'\0',1024); 

      file.Seek(i,CFile::begin);

      file.Read(strBuff.GetBuffer(0),1024);

      

      nRes=strBuff.Find(sString);

      if(nRes>=0)

      {

       file.Close();

       return i+nRes;

      }

      else

      {

       i=(i+1024)-nStrLen;

      }

     }

      file.Close();

     return nRes;

    }

    ///////////////////////////////////////////////////////////////////////////////

    说明:

    返回值:该函数的返回值是int型,如果查找成功,即找到了要查找的字符串(区分大小写),那就返回字符串首字符在文件中的位置(从0计算);如果查找不成功则返回一个负数;如果查找中遇到了其他的错误,如文件打开失败,文件状态异常等,也将返回负数(此时为-1)。

    参数:有两个参数,第一个参数sFilePath指示目标文件的路径(相对或绝对),第二个参数用于指示目标字符串(字符数组要以'\0'结尾),即要查找的字符串,二者都不应为空,否则会产生错误。

  • 相关阅读:
    python 打包exe文件并隐藏执行CMD命令窗口
    Python时间差中seconds和total_seconds的区别 datetime模块
    python之time和datetime的常用方法
    python pylint提示信息内容
    通过修改beautifulreport文件,修改测试类、测试方法、用例描述
    python 使用第三方库tomorrow实现并发
    像Excel一样使用python进行数据分析
    appnium定位+操作方式(python)
    python-appnium
    python练手项目
  • 原文地址:https://www.cnblogs.com/blueswitkey/p/3000967.html
Copyright © 2011-2022 走看看