C++ C++;:LPWSTR打印为cout中的地址
我有一个类型为C++ C++;:LPWSTR打印为cout中的地址,c++,pointers,unicode,cout,C++,Pointers,Unicode,Cout,我有一个类型为LPTSTR的变量,我用为您想要的Unicode字符串wcout打印到std::cout 您可能会看到十六进制,因为ANSI/ASCII输出流不知道如何处理Unicode字符 LPTSTR和LPWSTR实际上是从C-Windows API时代继承下来的C-ISM。对于C++,我强烈鼓励您使用 STD::String 和/或 STD::WString 。 如果您需要滚动自己的宏,您将需要以下内容: #ifdef _UNICODE std::wostream& COUT = s
LPTSTR
的变量,我用为您想要的Unicode字符串wcout
打印到std::cout
您可能会看到十六进制,因为ANSI/ASCII输出流不知道如何处理Unicode字符
LPTSTR
和LPWSTR
实际上是从C-Windows API时代继承下来的C-ISM。对于C++,我强烈鼓励您使用<代码> STD::String 和/或<代码> STD::WString 。
如果您需要滚动自己的宏,您将需要以下内容:
#ifdef _UNICODE
std::wostream& COUT = std::wcout;
#else
std::ostream& COUT = std::cout;
#endif
哦,谢谢。是否有一个标准的宏可以自动解析为cout或wcout?关于使用std::string-不幸的是,在WinAPI函数中使用了LPTSTR,所以我不得不使用它们。为了避免不必要的转换,我必须一直使用它们。当您希望将以c样式null结尾的字符串传递到Windows API时,可以使用.c_str()方法。关于标准宏:我不确定(现在我主要做c#)。如果我没记错的话,我必须自己滚,但那是几年前的事了。这应该不会太难。请参阅已编辑的响应。我将使用std::wostream&COUT=std::wcout代码>和std::wostream&COUT=std::COUT
而不是#define COUT wcout
和#define COUT