Dobra już znalazłem rozwiązanie
to samo działa przy zapisywaniu jedyny haczyk jest taki że trzeba używać wstring'ów i wchar_t
#include <Windows.h>
#include <fstream>
#include <locale>
#include <codecvt>
using namespace std;
int main()
{
wfstream file("ala.txt", ios::in);
locale local(locale(), new codecvt_utf8<wchar_t>);
file.imbue(local);
return EXIT_SUCCESS;
}
rozwiązanie znalazłem tutaj http://www.cplusplus.com/forum/beginner/107125/ oczywiście po lekkim przerobieniu