C++:LPWSTR作为cout中的地址打印

lap*_*pis 6 c++ unicode pointers cout

我有类型的变量LPTSTR,这是我要打印std::cout<<.在ANSI系统中(不知道确切的确定位置)它工作正常,它打印了字符串.现在在Unicode系统中,我得到一个十六进制地址而不是字符串.那么,为什么LPSTR (LPTSTR如果UNICODE未定义则解析)LPWSTR (... if UNICODEis defined)不同的行为以及如何打印后者指向的字符串?

Dav*_*vid 12

对于您想要的Unicode字符串wcout.

您可能会看到十六进制,因为ANSI/ASCII输出流不知道如何处理Unicode字符.

LPTSTRLPWSTR实际上从C Windows API的天继承了C-主义.对于C++,我强烈建议你使用std::string和/或std::wstring代替.

如果您需要滚动自己的宏,您将需要以下内容:

#ifdef _UNICODE
std::wostream& COUT = std::wcout;
#else
std::ostream& COUT = std::cout;
#endif
Run Code Online (Sandbox Code Playgroud)