GetCurrentDirectoryW() is likely working fine. It's the next bit that's got problems.
std::wcout is going to use the "C" locale. You're going to need to adjust (imbue()
) it appropriately to display your out of codepage glyphs. See this SO question for details.