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

时间:2011-05-03 17:35:32

标签: c++ pointers unicode cout

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

1 个答案:

答案 0 :(得分:10)

对于Unicode字符串,您需要wcout

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

LPTSTRLPWSTR实际上是从C Windows API时代继承的C-isms。对于C ++,我强烈建议您改为使用std::string和/或std::wstring

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

#ifdef _UNICODE
#define COUT wcout
#else
#define COUT cout
#endif