I have a variable of type LPTSTR, which I print to std::cout with <<. In an ANSI system (don’t know exactly where it is determined) it worked fine, it printed the string. Now in a Unicode system I get a hex address instead of the string. So, why does LPSTR (to which LPTSTR is resolved if UNICODE is not defined) act differently from LPWSTR (… if UNICODE is defined) and how do I print the string pointed by the latter one?
I have a variable of type LPTSTR , which I print to std::cout with
Share
For Unicode strings you want
wcout.You may be seeing hex because the ANSI/ASCII output stream doesn’t know how to handle Unicode characters.
LPTSTRandLPWSTRare actually C-isms inherited from the C Windows API days. For C++ I would strongly encourage you to usestd::stringand/orstd::wstringinstead.If you need to roll your own macro, you’ll want something like: