用 getline 读取 行,
然后用 string::find 方法查找 ......

解决方案 »

  1.   

    #include <fstream>
    #include <string>
    #include <cstdlib>
    #include <iostream>using namespace std;int main()
    {
        ifstream openf("test.txt");
    if(openf.fail())cerr << "error in openning file!"<<endl; 
    else
    {
            int lineindex=0;
            string line, str="6B 20 45 ";
         while(!openf.eof())
         {
         string::size_type index;
             getline(openf, line);
             lineindex++;
             index=line.find(str, 0);
             if(index != string::npos)
             {
                 cout<<"Find "<<str<<"on line="<<lineindex<<", index="<<index<<endl;
                 break;
             }       
         }
    }  
       
        system("pause");
        return 0;    
    }
    /*
    test.txt 文件内容为:
    00000000h: 47 40 10 1C 00 41 F0 6F 03 E8 C1 00 00 F0 62 4A
    00000010h: 07 00 02 03 15 00 00 04 40 0A D6 D0 D1 EB B5 E7
    00000020h: CA D3 CC A8 5B 4B 65 6E 67 10 4C 6F 63 61 6C 4E
    00000030h: 65 74 77 6F 72 6B 20 45 55 51 61 66 72 10 4C 6F
    00000040h: 63 61 6C 4E 65 74 77 6F 72 6B 20 45 4E 43 63 68
    00000050h: 69 0A D6 D0 D1 EB B5 E7 CA D3 CC A8 62 65 6C 11
    00000060h: 4C 6F 63 61 6C 4E 65 74 77 6F 72 6B 20 20 45 4E
    00000070h: 4A F0 00 E8 F7 77 9E FF FF FF FF FF FF FF FF FF?????
    00000080h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF程序输出 4行26列, 正确
    */
      

  2.   

    按字节找,先找到 6b 然后 看看后面是不是 20 如果不是则继续找 6b 如果是则看看后面是不是
    45 如果不是则继续找 6b 如果是则找到了,然后确定 6b 所在行的首地址,然后加上偏移量就是 6b 20 45 的内存地址了
      

  3.   

    to :jixingzhong(瞌睡虫·星辰)你这么做恐怕是不行的,因为 6b 20 45 是有可能位于2行的。
      

  4.   

    //KMP模式匹配
    按字节找
    记录匹配个数pc
    直到全匹配
      

  5.   

    楼上的代码感觉不是很好,直接查找"6B 20 45"很不方便,如果换一个字符串查找那又得先用计算器算出来然后再去修改代码去查找
    个人认为应该这样做:将要查找的字符串转换成十六进制的BYTE*,然后再将BYTE*的十六制值转换成相应的16进制字符串,也就是"6B 20 45",然后再Find就好了
    转换函数请到http://www.vckbase.com/document/viewdoc/?id=1133下载源码,找到String2Bytes(const char *pSrc, unsigned char *pDst, int nSrcLength),
    Bytes2String(const unsigned char *pSrc, char *pDst, int nSrcLength)即可实现互转
      

  6.   

    以二进制方式打开文件。读入数据。
    for(i=0; i < length - 2; i++)
    {
     if byte[i] == 0x6B
     {
        if(byte[i+1] == 0x20)
            if(byte[i+2] == 0x45)
                  return pos;
            esle
                continue;
    else
    continue;
      }
      

  7.   

    byte 好象是JAVA里面的把 -_-!
      

  8.   

    BYTE *p=new unsigned char[len] 弄成这个形式了