new[0] - ведёт к неопределённому поведению указателя при разыменовании.
А если используете new[(unsigned short)-1], то где гарантия, что поток будет короче 65536 символов?
Если будете работать с файлами, то можно предварительно запросить длину файла.