Вместо того, чтобы писать свои собственные, не лучше ли перейти на С++ std::string?
Ответ 6
Ну, очевидно, что ваша функция принимает basic_string<CharType> и позволяет пользователю сформировать один из них. Затем вся длина материала скрыта в стандартной библиотеке.
Если это не подходит, просто продолжайте отслеживать количество символов, когда вы копируете их во внутренний буфер потока.