使用 CFile 检查换行符(换行符)

Checking line breaks (newline characters) with CFile

我需要使用 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 算作一个字符:

For text-mode files, carriage return–linefeed pairs are counted as single characters.

我很困惑,因为文件指针显然仍然计数 2 个字符,但我不能同时获得它们。有什么方法可以用 CFile 检查文件末尾的换行符吗?

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

似乎 CFile::typeText 做了一些特殊的处理 carriage return–linefeed pairs (e.g. 填写一个应该是 carriage return 的垃圾字符) 这是不需要的就我而言。