Проверка разрывов строк (символы новой строки) с помощью 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 как один символ:

Для файлов в текстовом режиме пары возврата каретки и перевода строки считаются одиночными символами.

Я так растерялся, потому что указатель файла, очевидно, все еще насчитывает 2 символа, но я не могу получить их оба. Есть ли способ проверить разрыв строки в конце файла с CFile?

0

Решение

Я решил проблему с помощью CFile::typeBinary при открытии файла.

Кажется, что CFile::typeText сделать что-то специальное, обрабатывая пары возврата каретки-перевода строки (например, заполнив символ мусора, который должен быть символом возврата каретки), что в моем случае нежелательно.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector