Ваш входной файл выглядит так:
3[endline]
first fr random 5[endline]
second 9[endline]
third shazam 2[endline]
Обратите внимание на добавленные мной [endline]
: они могут быть '\n',
'\r\n'
в зависимости от системы, сгенерировавшей файл.
Ваша первая инструкция:
in >> n;
a отформатирован input read: вы просите прочитать целое число из файла, поэтому будут прочитаны только те символы, которые могут образовывать действительные целые числа.
Это означает, что после этой инструкции оставшаяся часть файла будет:
[endline]
first fr random 5[endline]
second 9[endline]
third shazam 2[endline]
Остальная часть вашего кода читает необработанные байты, поэтому он также будет читать первый [endline]
(и печатать его).
Как указано в комментариях, не следует использовать массивы переменной длины , поскольку они не являются частью какого-либо стандарта C ++ (но являются частью стандарта C). Попробуйте вместо этого использовать стандартную библиотеку C ++ .