我需要检查文件是否以换行符结束,使用CFile
。我试过的:
- 将文件指针指向文件的末尾
- 将指针向后移动2个单位
- 检查指针是否指向
rn
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
只将rn
计算为单个字符:
对于文本模式文件,回车-换行对计算为单个字符。
我很困惑,因为文件指针显然仍然计数2个字符,但我不能得到他们两个。是否有任何方法来检查在CFile文件结束换行?
我通过在打开文件时使用CFile::typeBinary
解决了这个问题。
似乎CFile::typeText
做了一些特殊的处理回车换行对(例如填充一个垃圾字符,应该是回车),这在我的情况下是不需要的。