in general это невозможно, так как wchar_t может не совпадать с размером TCHAR.
несколько решений уже перечислены для преобразования между наборами символов. они могут работать, если наборы символов перекрываются для преобразуемого диапазона.
Я предпочитаю обойти проблему полностью, где это возможно, и использовать стандартную строку, определенную в наборе символов TCHAR следующим образом:
typedef std::basic_string<TCHAR> tstring;
теперь вы можете использовать строку, совместимую со стандартной библиотекой, которая также совместима с макросом Windows TCHAR.