Мне нужно проверить, заканчивается ли файл переводом строки или нет, используя CFile
,
Что я пробовал:
\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?
Я решил проблему с помощью CFile::typeBinary
при открытии файла.
Кажется, что CFile::typeText
сделать что-то специальное, обрабатывая пары возврата каретки-перевода строки (например, заполнив символ мусора, который должен быть символом возврата каретки), что в моем случае нежелательно.
Других решений пока нет …