我希望输入一个文件名之后
可以判断该文件里面有没有我要找的某个字符串如: 我要在"test.txt"中搜索“ABC”,如果找到就返回真,否则返回假各位高手帮帮忙吧

解决方案 »

  1.   

    不知道有没有 api 可以用。不然自己搜。
      

  2.   

    你这样试试(给你一段程序):
    if(!file.Open(sFileName, CFile::modeRead))
    {
    m_sError="Unable to open testplan file!\n\"" + sFileName + "\"";
    return 1;
    }
    CString sItem, str;
    //ÒÀ´Î¶ÁÈ¡²âÊԼƻ®ÐÅÏ¢
    while(file.ReadString(sItem))
    {
    if(sItem.Find('#') == -1)
    {
    if(sItem.Find("BEGIN OF FILE") != -1) break;
    else if(sItem.Find("Information") != -1)
    m_sInfomation = sItem.Mid(25);
    else if(sItem.Find("Version") != -1)
    {
    extern CString g_sTestplanVersion;
    g_sTestplanVersion = sItem.Mid(25);
    }
    }
    }象源代码中的一样,先一行一行的读,然后再使用CString的Find函数
      

  3.   

    不对吧
    如果是这样:
    AB
    C
    那一行一行地读
    肯定找不到
      

  4.   

    你这样就不是“ABC”了,多了回车
      

  5.   

    楼上看 搜索要不要考虑 换行。毕竟\r\n or \n 也是字符
      

  6.   

    只有自己实现了
    如果文件不是很大直接一次性读入到内存然后strstr就可以了
      

  7.   

    自己写一个查找的函数:#include <afx.h>
    #include <iostream.h>int FindStringInText(const char* FileName,const char* FindString)
    {
    int result=FALSE;
    CString str="";
    if(GetFileAttributes((LPCTSTR)FileName)==0xFFFFFFFF)
    {
    return -1;    //指定文件不存在
    }
    CFile file((LPCTSTR)FileName,CFile::modeRead);
    char* temp=new char[file.GetLength()+1];
    memset(temp,0,file.GetLength()+1);
    file.Read(temp,file.GetLength());
    str=temp;
    result=str.Find((LPCTSTR)FindString,0);
    file.Close();
    delete []temp;
    temp=NULL;
    return result+1;
    }void main()
    {
    int position=FindStringInText("f:\\test.txt","测试");
    switch (position)
    {
    case -1:
    {
    cout<<"逗我玩啊?!指定文件不存在!"<<endl;
    break;
    }
    case 0:
    {
    cout<<"弄错了吧,你说的那个文件中没有你要找的字符!"<<endl;
    break;
    }
    default:
    {
    cout<<"你要找的字符在文件中第"<<position<<"个字符处!"<<endl;
    break;
    }

    }
    }