CString str;
CFile myFile(D:\\abc.txt,CFile::modeRead);
CArchive arLoad(&myFile,CArchive::load);
myFile.SetToBegin();
arLoad.ReadString(str);
arLoad.Close();
myFile.Close();
运行后产生了如下异常情况:
CArchive exception: endOfFile.
update.exe 中的 0x7c812afb 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012fba8 处的CArchiveException。在此我说明abc.txt这个文件是存在的,这个异常是读文件读到了文件的末尾,在此我希望高手能够告诉我怎么解决这个问题,谢谢!
CFile myFile(D:\\abc.txt,CFile::modeRead);
CArchive arLoad(&myFile,CArchive::load);
myFile.SetToBegin();
arLoad.ReadString(str);
arLoad.Close();
myFile.Close();
运行后产生了如下异常情况:
CArchive exception: endOfFile.
update.exe 中的 0x7c812afb 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012fba8 处的CArchiveException。在此我说明abc.txt这个文件是存在的,这个异常是读文件读到了文件的末尾,在此我希望高手能够告诉我怎么解决这个问题,谢谢!
不知道为什么myFile.SetToBegin(); 有时候用起来屡次不成功。
这是平时编程的时候遇到的
CArchive会自己管理文件指针的移动,不需要你设置,设置了反而有危险。
CArchive arStore(&my,CArchive::store);
arStore.WriteString("adjljjfakjlkkaf");
这样不是按行写入一行内容吗?晕死
WriteString仅仅写入字符串,不会自动写入\0或者回车换行,如果希望它保存回车换行,必须手动调用WriteString(_T("\r\n"));
ReadString读取一行,它会扫描到回车换行或者文件结束才结束(在缓冲区足够大的情况下)。如果文件中没有添加回车换行,它直接读到文件结尾。对照你自己的情况看看问题在哪。