Re: How to assign CString to wstring UNICODE compilation
CString is #ifdef'd to be synonymous to CStringA or to CStringW depending on settings. As victor indicates, this could be the problem.
Try literally changing yoru CString to CStringW in this particular case and retry. if it solves the issue, you need to get your compile settings corrected, if the error remains, then maybe there isn't an available (automatic) conversion available. In that case, you may need to explicitely typecast every CString to stringw conversion.
Re: How to assign CString to wstring UNICODE compilation
I tried CStringW, made no difference.
putting a typecast in front of the 'CStringW' also generates an error
I assume you mean
std::wstring val
CStringW src
val = (std::wstring)src;
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)
Re: How to assign CString to wstring UNICODE compilation
Originally Posted by PRMARJORAM
Yes that is very helpful thanks.
This clarifies what i have to do on the MFC side of my application to support UNICODE.
I also have similar but different problems with some libraries that are pure C++ std and STL.
I mean in there you have to use L"" whereas in MFC side you use _T("")
Thanks.
This really is more of the VC and windows environment than MFC. The bottom line is that if you use _T("") around string literals, it will work for both. If you use "" or L"", you could run into trouble. Also, consider calling api's that take strings, If you call SomeWinApi( _T("xxx") ), it's going to always work. However, without the _T("") macro, you'll need to explicitly call either the SomeWinApiA (ANSI) or SomeWinApiW (UNICODE) api version.
Re: How to assign CString to wstring UNICODE compilation
Can you have UNICODE and ASCII in the same program?
Actually, my specific problem is only that im downloading webpages. Most are western so no problem, but now some are not. specifically have a webpage using cyrillic text.
Im displaying a subset of the text from these webpages in a CListCtrl. When its cyrillic nothing is displayed. Im assuming here recompiling it all too UNICODE and then i should see cyrillic text in my CListCtrl? Its only in this instance i really need to use unicode - when displaying text from a non-western website?
Re: How to assign CString to wstring UNICODE compilation
While you *can* have both ANSI and UNICODE in a single program, I'd recommened that you compile your program for all UNICODE. If you have data coming in (or going out) that's then convert the data to UNICODE immediately so it's in one format throughout your program.
The main reason for doing this is that the Windows Operating System uses UNICODE internally and any ANSI calls you make, convert the strings to UNICODE and then just call the UNICODE version of the api. So there is extra overhead while interacting with the OS if your program is primarily in ANSI.
Bookmarks