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

时间:2016-10-05 12:52:04

标签: c++ mfc newline cfile

我需要使用CFile检查文件是否以换行符结束。 我尝试过:

  1. 将文件指针指向文件末尾
  2. 将指针向后移动2个单位
  3. 检查指针是否指向\r\n
  4. 这是我的代码:

    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文件末尾的换行符?

1 个答案:

答案 0 :(得分:0)

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

似乎CFile::typeText做了一些特殊的处理回车换行对(例如填写一个应该是回车的垃圾字符),这在我的案例中是不可取的。