The obvious problem is that str1 is an array of wchat_t and strId is a single wchar_t. So it's impossible to assign str1 to strId and the compiler is complaining for a good reason.
Now, the first step is to make strId and array of the same size as str1, so write:
wchar_t strId[2046];
The compiler will still not copy str1 into strId, because array copy is not a basic language construct. And in addition you don't want to copy all 2046 elements of str1, but only those up to and including the NULL character. But a library function comes to help, which is called _tcscpy_s, which does just that:
_tcscpy_s (strId, 2046, str1);
Keeping track of the length of such arrays, allocating them and copying them is kind of unpleasant task. The STL library type std::wstring takes away all that burden and makes things so much easier. The problems you are still having with wstring result from not enough experience with using this class. I'd recommend you take a look at the documentation and some examples and everything will work out fine. If you still are not in luck, paste the exact code you are using so we can have a look at it.