Можно ли так работать с указателями в C++?
new[0] - ведёт к неопределённому поведению указателя при разыменовании.
А если используете new[(unsigned short)-1], то где гарантия, что поток будет короче 65536 символов?
Если работаете с потоком - ищите по возможности алгоритмы потоковой обработки, позволяющие считывать данные посимвольно или фиксированными блоками.
Если будете работать с файлами, то можно предварительно запросить длину файла.
финт ушами в топку!
Вообще, при грамотной реализации, размер данных принято передавать вместе с их получением.
Классический пример:bool GetData(char* data, int* size);
Длину указателя на строку можно узнать через strlen();
Если чтение из файла, то при загрузке размер файла определяется стандартными методами.Как пример....считать сначала все символы без сохранения..Не нужно.