用CFile创建的文件,如何读出文件的一行?
谢谢!

解决方案 »

  1.   

    一行是什么概念 如果是回车的话(纯文本文件了) 判断读出的字符是否是"\r\n"就可以了(对应0D 0A) 或者用CStdioFile 直接就可以读一行
      

  2.   

    可是我不能一个字符一个字符的读,
    而且,我的文件是这样定义的
    CFile file;
    我怎么用CStdioFile来实现呢?
    CFile 中我只会用file.Read(&name,sizeof(name));
    sizeof(name)是你想要读出的字节数。
      

  3.   

    那没法,你的问题可以按cy214(threadx) 说的做,很好,
    按你的思路我觉的不行,除非你知道每行的字数
      

  4.   

    可是我不知道每行的字数,
    怎么按他的做呢,我需要把CFile类型改为CStdioFile吗?
      

  5.   

    比如我存的是
    name:andy.tome.suldj
    interest:sldkjsldkfsjsldksjfsk
    slkdfjsldfkjf
    memo:sldksldkfjsldfkjskdfjksdj
    sldkfjsldfksjdlfksjfslkdjfkfsd
    sldkfjslkdjfsldkfslkdjfkfjsljf
    我需要把name,interest,memo的内容提取出来
      

  6.   

    我觉得你存的时候有问题,你需要在每个字段后加一个特殊符号,这样提取时就可以用这个特殊符号来区分字段边界。
    如: 
    name: zhangzhang$
    interest:drawing$
    memo:sdfasdfasdfdsfasdfsd$@
    最后用一个@表示一条记录结束了,每个$符号表示一个字段结束。
    我以前作过类似的工作。
      

  7.   

    可是如果interest在未结束之前
    出现了与你的结束符号相同的符号怎么办呢
      

  8.   

    方案:1\在要求用户输入时屏蔽一些字符.
    2\可以用一些不可见字符做分割符号.如'/0',是ASCII码的0;还有其他字符
      

  9.   

    如果这样
    我必须一个字节一个字节的读
    如果我存的是时间类型,
    如birthday.我必须转化。
      

  10.   

    给你提点建议:对于数据量不大的简单文本文件操作,可以使用ifstream 和ofstream
    对于CFile,可以和CArchive配合使用,非常方便。
    前者用法参见最普通的C++教材,后者详细用法说明如下:
        //对文件进行写操作 
        CString strTemp; 
        CFile mFile; 
        mFile.Open("d:\\dd\\try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite); 
        CArchive ar(&mFile,CArchive::store); 
        ar<<  ar.Close(); 
        mFile.Close(); 
        //对文件进行读操作 
        CFile mFile; 
        if(mFile.Open("d:\\dd\\try.TRY",CFile::modeRead)==0) 
        return; 
        CArchive ar(&mFile,CArchive::load); 
         ar>>strTemp; 
          ar.Close(); 
        mFile.Close(); 
        CArchive的 << 和>> 操作符用于简单数据类型的读写,对于CObject派生类的对象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()还可以进行类的读写,如: 
        //存储CAboutDlg类 
        ar.WriteClass(RUNTIME_CLASS(CAboutDlg)); 
        //读取CAboutDlg类 
        CRuntimeClass* mRunClass=ar.ReadClass(); 
        //使用CAboutDlg类 
       CObject* pObject=mRunClass->CreateObject(); 
         ((CDialog* )pObject)->DoModal(); 还行吧,共同学习,共同进步,祝你愉快