@ vivek указал, что вы не можете передать fstream
"по значению".Передача вещей по значению делает их копии (или, скорее, запускает их конструктор копирования, который на самом деле может или не может сделать их «глубокую» копию).
Как только вы исправите это, iostream
s на самом делемилый и приятный.Они могут определить тип, который вы запрашиваете, и прочитать только этот объем данных.Если это символ и вы используете потоковые операторы, он прочитает значение байта:
string read_two_bytes(fstream& file)
{
char byte1, byte2;
file >> byte1 >> byte2;
string two_bytes;
two_bytes += byte1;
two_bytes += byte2;
return two_bytes;
}
@ Ним, кажется, пытается дать вам обобщенный ответ, возможно, чтобы показать C ++ против Python.Это больше ответ на вопрос для «N-байтов», за исключением того, что он жестко закодирован 2
, так что это выглядит как избыточное убийство.Это можно сделать проще, но приятно знать, что гибкость есть ... нет?
Если вы новичок в C ++ I / O, вы можете найти ответ на этот вопрос, который я потрудился написать на дняхбыть интересным в отличие от методов, предлагаемых другими ответами:
Ошибка вывода, когда ввод не является числом.C ++