Добавлено
Но вообще, идея читать юникодовые файлы как простой текст так себе идея. В Стандарте нет типов файлов с внешним представлением, отличным от char. Это внутреннее представление может быть разным, внешнее в лучшем случае должно быть UTF-8. Так что тут либо делать какой-нибудь свой std::codecvt, с простым always_noconv() == true, либо использовать бинарный ввод-вывод вместо форматного.