UNICODE (not _UNICODE) must be defined before including windows.h, and it only affects what parameters certain API calls take.
std::wcin and std::wcout are still at the mercy of the console (or rather, of the input and output streams), which may or may not be able to enter and display Unicode characters.
You don't need to include wchar.h in order to use wchar_t.