You could dynamically allocate a TCHAR array and then deallocate it after use.

TCHAR* psz = new TCHAR[nBufferLen + 1];
.
.
.
delete [] psz;

char and string don't work with unicode data.