The problem is most likely going to mount down to whether or not your system supports UTF8 or not in its interfaces taking char* parameters. Linux does. Windows does not.
There are wide versions, e.g. std::wifstream, but they come with their own problems and are tricky to use right.
In short, it's really platform specific and the best way to do it is just to use platform specific APIs because the standard guarantees nothing in this particular topic. You can have different behaviour between compilers and platforms.