使用 CFile 检查换行符(换行符)
Checking line breaks (newline characters) with CFile
我需要使用 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
算作一个字符:
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 的垃圾字符) 这是不需要的就我而言。
我需要使用 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
算作一个字符:
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 的垃圾字符) 这是不需要的就我而言。