0

我需要检查文件是否以换行符结尾,使用CFile. 我试过的:

  1. 将文件指针指向文件末尾
  2. 将指针向后移动 2 个单位
  3. 检查指针是否指向\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 检查文件末尾的换行符吗?

4

1 回答 1

0

CFile::typeBinary我通过打开文件时使用解决了这个问题。

似乎CFile::typeText做一些特殊的处理回车换行对(例如填写一个应该是回车的垃圾字符),这在我的情况下是不需要的。

于 2016-11-08T05:30:15.610 回答