我要在一个几M大小的文本文件内查找某个单词,如何快速找到它在文件内的位置,高手帮忙小弟:)

解决方案 »

  1.   

    分别从不同的位置开始查找单词,CFile::Seek()定位
      

  2.   

    几M大小??应该有什么算法可以解决的。如果没有算法那么只能靠硬找了。
    读入CString,然后使用CString的Find方法来找了!
      

  3.   

    把文件内如读入CString ,然后用Find查找
      

  4.   

    把文本中的所有单词读入一个STL的set/map里面,存储的时候自动用排序二叉树保存,查找就比较方便
      

  5.   

    //字符串模式匹配的KMP(D.E.Knuth-J.J.Morris-V.R.Pratt)算法
    int FindString(const char *pString,const char *pPattern)
    {
    int nPosT = 0;
    int nPosP = 0;
    int nPatternLength = strlen(pPattern);
    int nTLength = strlen(pString);
    //处理模式字符串先,生成失败函数
    int* pF = new int[nPatternLength];
    pF[0] = -1;
    for(int j = 1; j < nPatternLength; j++)
    {
    int i = pF[j - 1];
    while(*(pPattern + j) != *(pPattern + i + 1) && i >= 0)
    i = pF[i];
    if(*(pPattern + j) == *(pPattern + i + 1))
    pF[i] = i + 1;
    else
    pF[j] = -1;
    }
    while(nPosP < nPatternLength && nPosT < nTLength)
    {
    if(pPattern[nPosP] == pString[nPosT])
    {
    nPosT++;
    nPosP++;
    }
    else if(nPosP == 0)
    nPosT++;
    else
    nPosP = pF[nPosP - 1] + 1;
    } delete[] pF;
    if(nPosP < nPatternLength)
    return -1;
    else
    return nPosT - nPatternLength;
    }
      

  6.   

    其实我要做的就是在一个类似XML的文档中找到一些标志,如<cflo >      </cflo>,然后取出标志之间的内容,以前就是把文件读到CString中查找,不过速度很慢,一个1.5M的要5分钟,现在要处里的都是在10M以上,慢的受不了拉TT,老板很不满意T_T,大家帮我想想办法
      

  7.   

    在说明一下,因为读文件的时候如果一块一读的话,在间隔的时候可能会把一个单词分开,所以我是一个字符一读,放到CString中,如果遇到换行,就为一个CString操作比查找比较标志