用CFile创建的文件,如何读出文件的一行? 用CFile创建的文件,如何读出文件的一行?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一行是什么概念 如果是回车的话(纯文本文件了) 判断读出的字符是否是"\r\n"就可以了(对应0D 0A) 或者用CStdioFile 直接就可以读一行 可是我不能一个字符一个字符的读,而且,我的文件是这样定义的CFile file;我怎么用CStdioFile来实现呢?CFile 中我只会用file.Read(&name,sizeof(name));sizeof(name)是你想要读出的字节数。 那没法,你的问题可以按cy214(threadx) 说的做,很好,按你的思路我觉的不行,除非你知道每行的字数 可是我不知道每行的字数,怎么按他的做呢,我需要把CFile类型改为CStdioFile吗? 比如我存的是name:andy.tome.suldjinterest:sldkjsldkfsjsldksjfskslkdfjsldfkjfmemo:sldksldkfjsldfkjskdfjksdjsldkfjsldfksjdlfksjfslkdjfkfsdsldkfjslkdjfsldkfslkdjfkfjsljf我需要把name,interest,memo的内容提取出来 我觉得你存的时候有问题,你需要在每个字段后加一个特殊符号,这样提取时就可以用这个特殊符号来区分字段边界。如: name: zhangzhang$interest:drawing$memo:sdfasdfasdfdsfasdfsd$@最后用一个@表示一条记录结束了,每个$符号表示一个字段结束。我以前作过类似的工作。 可是如果interest在未结束之前出现了与你的结束符号相同的符号怎么办呢 方案:1\在要求用户输入时屏蔽一些字符.2\可以用一些不可见字符做分割符号.如'/0',是ASCII码的0;还有其他字符 如果这样我必须一个字节一个字节的读如果我存的是时间类型,如birthday.我必须转化。 给你提点建议:对于数据量不大的简单文本文件操作,可以使用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(); 还行吧,共同学习,共同进步,祝你愉快 单文档切分之后,在一个窗口放入视图//返回空文档错误。。。 'fxc' 不是内部或外部命令,也不是可运行的程序 动态链接库和COM GetWindowPlacement和GetWindowRect的区别 如何把非模态对话框临时转为模态对话框然后再转化回来? 创建Excel文件并显示过程中出错? 已知一个数12345,怎么用手工开平方,开立方? 关于怎么样在internet上配置数据源 在哪里可以下载此软件 如何获得Windows内部系统调色板? 《》《》《》《》《》 急求一算法,在线等待,时间紧迫 《》《》《》《》《》 VC中,CString的值的查看
而且,我的文件是这样定义的
CFile file;
我怎么用CStdioFile来实现呢?
CFile 中我只会用file.Read(&name,sizeof(name));
sizeof(name)是你想要读出的字节数。
按你的思路我觉的不行,除非你知道每行的字数
怎么按他的做呢,我需要把CFile类型改为CStdioFile吗?
name:andy.tome.suldj
interest:sldkjsldkfsjsldksjfsk
slkdfjsldfkjf
memo:sldksldkfjsldfkjskdfjksdj
sldkfjsldfksjdlfksjfslkdjfkfsd
sldkfjslkdjfsldkfslkdjfkfjsljf
我需要把name,interest,memo的内容提取出来
如:
name: zhangzhang$
interest:drawing$
memo:sdfasdfasdfdsfasdfsd$@
最后用一个@表示一条记录结束了,每个$符号表示一个字段结束。
我以前作过类似的工作。
出现了与你的结束符号相同的符号怎么办呢
2\可以用一些不可见字符做分割符号.如'/0',是ASCII码的0;还有其他字符
我必须一个字节一个字节的读
如果我存的是时间类型,
如birthday.我必须转化。
对于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(); 还行吧,共同学习,共同进步,祝你愉快