点评:对于一般文件的读取,建议还是用CStdioFile来进行行的读与写操作,这样非常方便的.
[问题提出]
一数据文件一行一条记录,我用file.ReadString()一次读一行,并对读取的数据做一些处理;
请问:
while(文件还没到结尾) {
file.ReadString();
...
}
文件还没到结尾如何判断?如果,到了指定位置不读了,过一会儿再读又如何做?
[解决方法]
方法1:
while()中不用另加判断条件了,因为CStdioFile::ReadString()本身就是判断标志,若没有了(文件到头)返回NULL,因此下列语句即可实现。
while(file.ReadString(s))
{
}
方法2:
当然也可以使用下列方法判断有没有读到文件结束:
while(file.GetPosition() != file.GetLength())
{
}
[程序实现]
假设你已有了名为ts.txt的文件在你的工程目录下:
{
CStdioFile file;
CString sss;
char ccc[100];
DWORD dwCurrentPosition=0;
int ReadLineNum=0;
file.Open("ts.txt",CFile::modeRead);
while(file.ReadString(sss))
{
ReadLineNum++;
if(ReadLineNum>1)//读两次就不读了.
break;
}
dwCurrentPosition=file.GetPosition();//记录上次的结果(读到哪了)
file.Seek(dwCurrentPosition,0);//接着上回读
while(file.ReadString(sss))
{
strcpy(ccc,sss);
AfxMessageBox(ccc);
}
}