Итак, я читаю входной файл, который содержит:
lololololololol
Мне нужно прочитать его, используя двоичный код по одному байту за раз, для чего-то, что я буду делать позже. Для этого я использую get()
, чтобы прочитать его, а затем сохранить в char. Кажется, он работает правильно, за исключением последнего символа, который он считывает. Вектор, который он считывает, содержит:
lololololololol
�
Я не совсем уверен, что это за последнее значение, но оно полностью отбрасывает мой окончательный вывод. Итак, мой вопрос: есть ли причина, по которой get()
будет читать значение или байт из моего текстового документа, которого там нет? Или это чтение чего-то, о чем я не знаю?
код:
while(istr.good()) {
temp = istr.get();
input.push_back(temp);
}
get
возвращаетEOF
при достижении конца файла.good
не будет сообщать о конце файла, пока это не произойдет. Итак, загадочный символ — это маркер EOF. - person Jonathan Potter   schedule 14.02.2016while (stream is good) { read from stream; use data }
неправильно. Поток не станет плохим до тех пор, пока после вы не попытаетесь прочитать за конец буфера..good()
не говорит о будущем. - person Lightness Races in Orbit   schedule 14.02.2016