【发布时间】:2016-10-05 12:52:03
【问题描述】:
我需要使用CFile 检查文件是否以换行符结尾。
我尝试过的:
- 将文件指针指向文件末尾
- 将指针向后移动 2 个单位
- 检查指针是否指向
\r\n
这是我的代码:
cfile.SeekToEnd();
cfile.Seek(-2, CFile::current);
char buffer[2];
cfile.Read(buffer, 2);
if(buffer[0] == '\r' && buffer[1] == '\n') printf("Ended with line break!");
else printf("Not ended with line break!");
但是,我发现缓冲区给了我一个 \n 字符和一个垃圾字符(具有奇怪的值,例如 204)。通过文档进行一些研究后,我发现CFile::Read 仅将\r\n 计为单个字符:
对于文本模式文件,回车-换行对被计为单个字符。
我很困惑,因为文件指针显然仍然计算 2 个字符,但我无法同时获得它们。有什么方法可以用 CFile 检查文件末尾的换行符吗?
【问题讨论】:
-
我们不知道
cfile是什么类型。它是CFile还是从它派生的东西(如CStdioFile)?顺便说一句,您为什么不直接调用cfile.Seek(-2, CFile::end);而不是前两行? -
哦,
cfile.Seek(-2, CFile::end);也是个好主意。但是我仍然得到相同的结果。顺便说一句,我正在使用CFile。